我正在尝试更改列表列表(矩阵),但保留一个已保存的版本,以便撤消所做的更改。然而,当我更改矩阵时,保存的版本也在更改。这是我的代码:
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
谢谢你的帮助!
由于列表是可变的,所以您要处理对对象的引用。你可以用几种方法保存嵌套列表结构的副本——这里有两种,
saved_matrix = [row[:] for row in matrix]
而且,
import copy
saved_matrix = copy.deepcopy(matrix)
执行此
saved_matrix = matrix
你会有相同的对象,有两个不同的名称。。。
要复制对象,可以使用copy
标准库:http://docs.python.org/2/library/copy.html
代码将如下所示:
from copy import deepcopy
saved_matrix = deepcopy(matrix)
您可以使用copy.deepcopy()
:复制矩阵
from copy import deepcopy
saved_matrix = deepcopy(matrix)