为什么两个数组共享值?

Why do two arrays share values?

我有一个数组 array1 = [[0, 1, 2, 3], [4, 5, 6, 7]],我想切换 array1[0]array1[1],理想情况下看起来像这样:array1 = [[4, 5, 6, 7], [0, 1, 2, 3]]。到目前为止我试过这个:

array1 = [[0, 1, 2, 3], [4, 5, 6, 7]]
array2 = array1
array1[0] = array2[1]
array1[1] = array2[0]

但是那个returns[[4, 5, 6, 7], [4, 5, 6, 7]]。有谁知道为什么会这样?

当你说:

array2 = array1

您这样做是为了 array2 引用内存中与 array1 相同的对象。这称为“绑定”分配。之后的表达式:

array1[0] = array2[1]

无异于说:

array1[0] = array1[1]

array1 和 array2 之间不再有任何区别。

你可以试试:

array1 = [array1[1], array1[0]]

那你就不需要array2.

您想复制一个数组,但是:

array2 = array1

没有复制。您刚刚创建了一个新标签 array2 并将其指向 array1.

要复制数组,您可以在 copy.copy()copy.deepcopy() 处循环:https://docs.python.org/3/library/copy.html