• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

Code Assignment: Linear algebra with pythonic code [ def is_matrix_equal(*matrix_variables):] 관련하여 질문드립니다.

18.05.10 17:27 작성 조회수 114

0

하기 주제 관련하여,

– Code Assignment: Linear algebra with pythonic code

비교가 되는 n개의 matrix가 서로 동치인지 확인하여 True 또는 False를 반환함

def is_matrix_equal(*matrix_variables):

return []

를 하기와 같이 풀고 있는 중에 있습니다.

def is_matrix_equal(*matrix_variables): return [ [ print(a, *args) for a, *args in zip(*i)] for i in zip(*matrix_variables)]

이때, a 와 *args 의 밸류 값이 뜨는데 , 둘의 밸류가 같은지 비교하여 True False 로

반환만 하면 될 것 같은데, 이 후, 방법이 잘 떠오르지 않습니다.

접근법이 맞는지 궁금하여, 힌트 주실수 있으시다면 힌트좀 부탁드립니다…

답변 1

답변을 작성해보세요.

0

for a, args in zip(i) 를 하면 matrix 가 2개일 때는 같은 인덱스에서 첫번째 값과 두번째 값을 비교할 수 있겠지만, 비교하고자 하는 matrix 가 3개 이상일 경우에는 첫번째 값[0]과 나머지 부분의 값([1:]으로 구분하게 되기 때문에, 같은 인덱스에 해당하는 값을 한꺼번에 가져오는 방향으로 코드를 수정하는 것이 좋을 것 같습니다.

(주신 코드에서 print(a, args) → print(a, ‘&’, args) 로 수정하여

matrix_x = [[1, 2], [3, 4]]

matrix_y = [[5, 6], [7, 8]]

matrix_z = [[9, 10], [11, 12]]

print (is_matrix_equal(matrix_x, matrix_y, matrix_z)) 로 값이 어떻게 출력되는지 테스트 해보시길 바랍니다.)

전체적인 내용을 정리하면

  1. 같은 위치(인덱스)에 있는 값들을 차례대로 가져옵니다.(주신 코드에서 약간만 수정하였습니다.)

    def is_matrix_equal(matrix_variables): return [ [a for a in zip(i)] for i in zip(*matrix_variables)]

  2. 같은 인덱스의 값을 가져왔을 때, 같은 인덱스의 값들이 모두 같은 값을 가지는지 체크합니다.

    • 참고
    • 1) python 에는 중복된 값을 허용하지 않은 set 이라는 자료형이 있습니다.

      2) 리스트에는 숫자, 문자열 등 외에도 boolean 값(True, False)이 들어갈 수도 있습니다.

  3. 전체적으로 중복된 값이 있는 인덱스가 있는지 체크합니다.