2013-08-12 8 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 = [row[:] for row in matrix] 

И,

import copy 
saved_matrix = copy.deepcopy(matrix) 
1

Выполнение этого

saved_matrix = matrix 

вы просто то же самое объект с двумя разными именами ...

Чтобы дублировать ваш объект, вы можете использовать стандартный copy lib: http://docs.python.org/2/library/copy.html

код будет выглядеть следующим образом:

from copy import deepcopy 
saved_matrix = deepcopy(matrix) 
Смежные вопросы