在Python中复制矩阵

时间:2016-12-02 00:08:11

标签: python matrix

我想复制矩阵,以便更改副本中的值不会更改原始值。我理解为什么以下内容不正确:

matrix1 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 = matrix1
matrix2[0][0] = 9
matrix2  # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix1  # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 is matrix1  # True

我原来的方法是:

matrix1 = [[1, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 = matrix1[:][:]
matrix2[0][0] = 9
matrix2  # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix1  # [[9, 2, 3], [1, 2, 3], [1, 2, 3]]
matrix2 is matrix1  # False

在第二个代码摘录中,matrix1matrix2不引用同一个对象。 为什么然后,matrix2中的更改仍会影响matrix1我理解如果它们是单独的对象,那么更改一个不会改变另一个,这是切片符号适用于一维数组的原因。

1 个答案:

答案 0 :(得分:1)

第一个[:]生成最外层列表的副本。第二个[:]生成最外层列表的另一个副本。

您想要做的事情被称为"深层复制"。请查看copy模块:https://docs.python.org/dev/library/copy.html#copy.deepcopy