2010-07-20 31 views

回答

5

使用切片符号。

newlist = oldlist

这将第二个名称分配给同一列表

newlist = oldlist[:]

这会的oldlist每个元素复制到newlist

5

除了被称为一个完整的新名单Lizard提到的切片符号,

y您可以同时使用list()

newlist = list(oldlist) 

或蜥蜴和gnibbler复制

import copy 
newlist = copy.copy(oldlist) 
2

的answes是正确的,但我想补充一点,所有这些方面给出一个浅拷贝,即:

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

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

7

看那copy module,并注意浅层和深层副本之间的区别:

浅层和深层复制之间的差异只为复合对象(包含其他对象的对象,如列表或相关类实例):

  • 浅拷贝构造新化合物的对象,然后(在可能的程度)中插入的引用诠释将其发送到原件中的对象。

  • A 深层复制构造一个新的复合对象,然后递归地在其中找到原始对象中的副本。

+4

请注意,这只是对可变数据的容器有关。包含整数的元组列表不会受到copy.deepcopy的影响,而列表中包含另一个列表。 – nmichaels 2010-07-20 12:40:48