我需要能够在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]]
知道怎么做吗?
答案 0 :(得分:8)
到目前为止,您尝试的所有内容只会创建外部列表的浅表副本。要创建深层副本,请使用
copied_list = [x[:] for x in my_list]
使用列表理解或
copied_list = copy.deepcopy(my_list)
使用copy.deepcopy()
函数。
答案 1 :(得分:3)