2013-08-12 3 views
0

목록 (매트릭스)을 변경하려고하지만 변경 내용을 취소 할 수 있도록 저장된 버전을 유지하려고합니다. 그러나 매트릭스를 변경하면 저장된 버전도 변경됩니다.변경 후 목록을 복원하는 방법

matrix = [[14, 12, 13, 15, 16, 13, 12, 14], 
      [11, 11, 11, 11, 11, 11, 11, 11], 
      [0, 0, 0, 0, 0, 0, 0, 0], 
      [0, 0, 0, 0, 0, 0, 0, 0], 
      [0, 0, 0, 0, 0, 0, 0, 0], 
      [0, 0, 0, 0, 0, 0, 0, 0], 
      [1, 1, 1, 1, 1, 1, 1, 1], 
      [4, 2, 3, 5, 6, 3, 2, 4]] 
    saved_matrix = matrix 
    matrix[4][2] = 8 
    matrix = saved_matrix 
    print matrix 

어떤 도움을 주셔서 감사합니다 여기 내 코드입니다!

답변

0

당신은 copy.deepcopy()를 사용하여 행렬을 복사 할 수 있습니다 : 목록을 사용하면 객체에 대한 참조를 다루고있는 변경할 수 있습니다

from copy import deepcopy 
saved_matrix = deepcopy(matrix) 
+0

당신을 감사합니다! 어디서나 솔루션을 찾을 수 없었습니다. – RudyMenon

+0

직접 코드를 작성하기 전에 내장 된 모듈을 찾는 것이 좋습니다 ... –

1

입니다. 이

saved_matrix = matrix 

방금 ​​같은 것입니다 수행,

saved_matrix = [row[:] for row in matrix] 

그리고,

import copy 
saved_matrix = copy.deepcopy(matrix) 
1

여기에 두 가지 - 당신은 몇 가지 방법으로 중첩 된리스트 구조의 사본을 저장할 수 있습니다 두 개의 다른 이름을 가진 객체입니다 ...

객체를 복제하려면 copy 표준 라이브러리 : 012를 사용할 수 있습니다. 37,

코드는 다음과 같이 표시됩니다

from copy import deepcopy 
saved_matrix = deepcopy(matrix)