使用“附加”或“扩展”时,我的原始列表正在更改

2024-05-13 23:08:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道这是否是Python的正常行为。代码是:

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

然后

>>>testlist.extend(abcd)

或者如果我使用:

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

调用testlist的结果是相同的,这非常好:

>>>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]]

这让我发疯。在每次需要从列表中提取数据时,我应该如何在不更改原始列表和不制作副本的情况下继续操作。多谢各位


Tags: 数据代码in列表for副本情况item
1条回答
网友
1楼 · 发布于 2024-05-13 23:08:33

你必须区分深拷贝和浅拷贝。在您的例子中,testlist似乎是一个浅拷贝,因为对其中一个的更改也反映在另一个中。因此,您可能需要深入研究复制列表

例如:

import copy
testlist = copy.deepcopy(abcd)

或者更简单:

testlist = abcd[:]

相关问题 更多 >