python中的列表,带引用

时间:2010-07-20 12:22:35

标签: python list reference copy

如何复制列表的内容而不仅仅是Python中列表的引用?

4 个答案:

答案 0 :(得分:7)

查看copy module,注意浅拷贝和深拷贝之间的区别:

  

浅层和深层复制之间的区别仅与复合对象(包含其他对象的对象,如列表或类实例)相关:

     
      
  • 浅拷贝构造一个新的复合对象,然后(尽可能)将对它的引用插入到原始对象中找到的对象。

  •   
  • 深层复制构造一个新的复合对象,然后递归地将复制品插入到原始对象中找到的对象。

  •   

答案 1 :(得分:5)

使用切片表示法。

newlist = oldlist

这将为同一列表指定第二个名称

newlist = oldlist[:]

这会将oldlist的每个元素复制到一个名为newlist

的完整新列表中

答案 2 :(得分:5)

除了Lizard提到的切片符号外,

您可以使用list()

newlist = list(oldlist)

或复制

import copy
newlist = copy.copy(oldlist)

答案 3 :(得分:2)

Lizard和nibbler的答案是正确的,但我想补充一点,所有这些方式都给出了浅层副本,即:

l = [[]]
l2 = l[:] // or list(l) or copy.copy(l)
l2[0].append(1)
assert l[0] == [1]

对于深层复制,您需要copy.deepcopy()。