我正在尝试更改列表列表(矩阵)但保留已保存的版本,以便我可以撤消我所做的更改。但是,当我更改矩阵时,保存的版本也会发生变化。 这是我的代码:
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 :(得分:1)
由于列表是可变的,因此您正在处理对象的引用。您可以通过几种方式保存嵌套列表结构的副本 - 这里有两个,
saved_matrix = [row[:] for row in matrix]
和
import copy
saved_matrix = copy.deepcopy(matrix)
答案 1 :(得分:1)
这样做
saved_matrix = matrix
你将拥有相同的对象,有两个不同的名字......
要复制对象,可以使用copy
标准库:http://docs.python.org/2/library/copy.html
代码如下所示:
from copy import deepcopy
saved_matrix = deepcopy(matrix)
答案 2 :(得分:0)
您可以使用copy.deepcopy()
复制矩阵:
from copy import deepcopy
saved_matrix = deepcopy(matrix)