首页 > 解决方案 > 为什么两个数组共享值?

问题描述

我有一个数组array1 = [[0, 1, 2, 3], [4, 5, 6, 7]],我想切换array1[0]and 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]

但这又回来了[[4, 5, 6, 7], [4, 5, 6, 7]]。有谁知道为什么会这样?

标签: pythonlistswap

解决方案


当你说:

array2 = array1

您正在使它array2引用内存中的相同对象array1。这称为“绑定”分配。之后的表达式:

array1[0] = array2[1]

无异于说:

array1[0] = array1[1]

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


推荐阅读