当使用添加或扩展[重复]时,我的原始列表正在更改

问题描述 投票:0回答:1
我想知道这是否是Python的正常行为。代码是:

>>>abcd = [["a","b","c","d"],[1,2,3,4]] >>>testlist = []

然后

>>>testlist.extend(abcd)

或者如果我使用:

>>>for item in abcd: testlist.append(item)

调用测试列表的结果是相同的,这完全可以:

>>>testlist [['a', 'b', 'c', 'd'], [1, 2, 3, 4]]

但是当我使用'testlist'做某事时,更改也会出现在'abcd'中

>>>testlist[0].append("anything") >>>testlist [['a', 'b', 'c', 'd', 'anything'], [1, 2, 3, 4]] >>>abcd [['a', 'b', 'c', 'd', 'anything'], [1, 2, 3, 4]]

这让我发疯。如何在不更改原始列表且不每次需要复制某些数据的情况下都进行复制。谢谢。    
python list append extend
1个回答
1
投票
您必须区分深层副本和浅层副本。在您的情况下,测试清单似乎是一个浅表副本,因为对一个清单的更改也反映在另一个清单上。因此,您可能需要查看深层复制列表。

例如:

import copy testlist = copy.deepcopy(abcd)

或更简单:

testlist = abcd[:]

© www.soinside.com 2019 - 2024. All rights reserved.