作者:bunnyvivi | 来源:互联网 | 2023-09-24 15:26
我想要做的是将嵌套列表分配给另一个列表.例如,从alist到blist.
alist = [[0], [1], [2], [3]]
blist = alist[:]
blist[0].append(1)
这样,id(alist [0])等于id(alist [1]),所以alist也改为[[0,1],[1],[2],[3]],这不是我想要的.
我的解决方法是:
alist = [[0], [1], [2], [3]]
blist = []
for item in alist:
blist.append(item[:])
blist[0].append(1)
在此变通方法中,alist不会受到更改blist项目的影响.
然而,似乎没有那么pythonic,有没有更好的解决方案?这可以解决更多2级嵌套列表的深层副本.例如:alist = [[[1],10],[[2],20],[[3],30]]
解决方法:
我想你想使用copy.deepcopy(),这也解决了更深层次的副本:
>>> import copy
>>> alist = [[0], [1], [2], [3]]
>>> blist = copy.deepcopy(alist)
>>> blist[0].append(1)
>>> alist
[[0], [1], [2], [3]]
>>> blist
[[0, 1], [1], [2], [3]]