행렬의 행렬식을 찾는 스 니펫을 작성했습니다. 행렬은 다음과 같은 중첩 목록으로 표현됩니다.원래 목록의 작업에서 목록의 복사본이 변경되었습니다.
[[2,3],[5,6]]
여기서 외부 목록의 구성원은 행이고 내부 구성원은 열입니다.
몇 가지 요소를 제거하여 더 간단하게 매트릭스를 확장해야하는 단계에서 원래 목록의 백업을 다른 목록 'bak'에 저장하여 이후 확장시이를 사용해야했습니다.
그러나 첫 번째 확장 단계 후에 원래 목록의 값을 'bak'에서 복원하려고 시도하면 원래 목록의 작업이 'bak'에도 반영된 것 같습니다. 인쇄 "박"출력을
def determinant(matrix):
if len(matrix)==2:
det = matrix[0][0]*matrix[1][1]-matrix[1][0]*matrix[0][1]
if len(matrix)>2:
flag=0
bak=[]
for x in matrix:
bak.append(x)
dump=[]
for ind,x in enumerate(matrix):
matrix.pop(ind)
for n,y in enumerate(matrix):
matrix[n].pop(ind)
dump.append(matrix)
print "bak",bak
matrix=bak
matrix=[[1,2,3],[4,5,6],[7,8,9]]
determinant(matrix)
이었다 [1, 2, 3], [5, 6], [8, 9]가 추정 된 위치 될 [1,2,3] , [4,5,6], [7,8,9]]
어떤 개념을 감독하면 저를 도우십시오.
bak.append (x [:]) bak.append가 완벽하게 작동 했으므로 원하는 출력을 얻었습니다. –