如何复制列表的内容而不仅仅是Python中列表的引用?
答案 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()。