如何解决为什么两个数组共享值?
我有一个数组 array1 = [[0,1,2,3],[4,5,6,7]]
,我想切换 array1[0]
和 array1[1]
,理想情况下看起来像这样:array1 = [[4,7],[0,3]]
。到目前为止,我已经尝试过这个:
array1 = [[0,7]]
array2 = array1
array1[0] = array2[1]
array1[1] = array2[0]
但这会返回 [[4,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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。