2011-11-11 128 views
2

我需要能夠複製python列表的列表。在python中複製列表的列表?

例如,現在我有一個函數返回一個列表。

這總是在列表中列出。

例如:

myList = [[1,2,3],[4,5,6],[7,8,9]] 

現在我需要創建這個列表的兩個副本(myList1和myList2),每一個都是獨立可變的(例如,如果我編輯myList1,myList2不會編輯)

我已經嘗試了一切。

從簡單:

myList1 = myList[:] 
myList2 = myList[:] 

到更復雜:

myList1 = [] 
for ch in myList: 
     myList1.append(ch) 


myList2 = [] 
for ch in myList: 
     myList2.append(ch) 

沒有什麼作品。如果我在一個列表中更改值:

myList1[0][0] = 10 

兩個列表變成:

[[10,2,3],[4,5,6],[7,8,9]] 

任何想法如何做到這一點?

回答

8

到目前爲止,您嘗試過的所有內容都只會創建外部列表的淺表副本。要創建一個深拷貝,使用

copied_list = [x[:] for x in my_list] 

使用列表理解或

copied_list = copy.deepcopy(my_list) 

使用copy.deepcopy()功能。

+0

得益於它完美地工作。 – tknickman