这两种类型的列表副本有什么区别

2024-10-04 11:22:51 发布

您现在位置:Python中文网/ 问答频道 /正文

nLst1 = ['A','B','C','D']

nLst2 = nLst1

# And

nLst3 = nLst1[:]

Tags: andnlst3nlst1nlst2
2条回答

第一个不是复制,它将把两个丢失的都指向同一个内存地址,第二个将复制。如果实现了第一个,那么更改一个将影响另一个。第二个将定义一个指向不同内存地址的列表的新切片副本,您也可以使用list.copy()来完成,它们都将使用O(n)

nLst2 = nLst1使nLst2指向与nLst1相同的内存,这意味着修改一个数组的内容将修改另一个数组:

list1 = [1, 2, 3]
list2 = list1
list2[0] = 3
list1 # [3, 2, 3]

但是,nLst3 = nLst1[:]复制了nLst1,因此这两个数组是不相交的:

list1 = [1, 2, 3]
list2 = list1[:]
list2[0] = 3
list1 # still [1, 2, 3]

阅读更多here

相关问题 更多 >