如何在进行更改后还原列表

时间:2013-08-12 17:08:40

标签: python list unlink

我正在尝试更改列表列表(矩阵)但保留已保存的版本,以便我可以撤消我所做的更改。但是,当我更改矩阵时,保存的版本也会发生变化。 这是我的代码:

    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

感谢您的帮助!

3 个答案:

答案 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)