我有一个关于在python中删除多维列表中的依赖关系的问题。
目前,我的大型脚本中有一个(简化的)代码段:
mylist = [ 1,2,3 ]
listreplaced = mylist
listreplaced[0]="test"
print mylist
mylist = [ 1,2,3 ]
listreplaced = list(mylist)
listreplaced[0]="test"
print mylist
#Here it gets tricky
mylist = [ [ 1,2,3 ] ]
listreplaced = list(mylist)
listreplaced[0][0] = "test"
print mylist
mylist = [ [ 1,2,3 ] ]
listreplaced = list(mylist[0])
listreplaced[0] = "test"
print mylist
哪个输出:
[['test', 2, 3]
[1, 2, 3]
[['test', 2, 3]]
[[1, 2, 3]]
如您所见,第三个示例也替换了多维列表中的第一个值。我想要做的是:无论列表有多少维度,我想要一个函数使它独立于它所基于的列表。代码将是这样的:
mylist = [ [ 1,2,3 ] ]
listreplaced = makeIndependentList(mylist)
listreplaced[0][0] = "test"
print mylist
,结果应为[[1, 2, 3]]
而不是[['test', 2, 3]]
。
有没有人对如何编写这样的函数有任何想法?它应该,无论列表的维度数量,所以如果我有一个列表[ [ [ [ [ [ 1,2,3 ] ] ] ] ] ]
,它仍然应该在所有级别上独立。
提前致谢,
杰夫
答案 0 :(得分:2)
你只需使用复制模块......那就是它的用途......
from copy import deepcopy
my_other_list = deepcopy(my_list)