为什么两个数组共享值?
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
我有一个数组 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