2011-11-11 88 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