2010-07-20 53 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