【问题标题】:What is difference between these two type of List copy [duplicate]这两种类型的列表副本有什么区别[重复]
【发布时间】:2021-02-21 22:38:09
【问题描述】:
nLst1 = ['A','B','C','D']

nLst2 = nLst1

# And

nLst3 = nLst1[:]

【问题讨论】:

  • nLst2 = nLst1 不是副本。这就是区别。
  • 查看在每个列表上调用id() 的结果。 1 和 2 相等,3 不相等。

标签: python list


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2016-04-18
      • 2018-07-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-01-12
      • 2011-12-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多