在python中复制列表列表?

时间:2011-11-11 21:28:40

标签: python list duplicates

我需要能够在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]]

知道怎么做吗?

2 个答案:

答案 0 :(得分:8)

到目前为止,您尝试的所有内容只会创建外部列表的浅表副本。要创建深层副本,请使用

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

使用列表理解或

copied_list = copy.deepcopy(my_list)

使用copy.deepcopy()函数。

答案 1 :(得分:3)

使用copy.deepcopy

myList2 = copy.deepcopy(myList1)

查看在线工作:ideone