如何在进行更改后恢复列表



我正在尝试更改列表列表(矩阵),但保留一个已保存的版本,以便撤消所做的更改。然而,当我更改矩阵时,保存的版本也在更改。这是我的代码:

    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)

最新更新