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

感谢您的任何帮助!

4

3 回答 3

1

由于列表是可变的,因此您正在处理对对象的引用。您可以通过几种方式保存嵌套列表结构的副本 - 这里有两种,

saved_matrix = [row[:] for row in matrix]

和,

import copy
saved_matrix = copy.deepcopy(matrix)
于 2013-08-12T17:17:17.703 回答
1

这样做

saved_matrix = matrix

您将拥有相同的对象,但具有两个不同的名称...

要复制您的对象,您可以使用copy标准库:http ://docs.python.org/2/library/copy.html

代码将如下所示:

from copy import deepcopy
saved_matrix = deepcopy(matrix)
于 2013-08-12T17:19:16.390 回答
0

您可以使用复制矩阵copy.deepcopy()

from copy import deepcopy
saved_matrix = deepcopy(matrix)
于 2013-08-12T17:16:49.913 回答