我想知道这是否是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]]
这让我发疯。在每次需要从列表中提取数据时,我应该如何在不更改原始列表和不制作副本的情况下继续操作。多谢各位
你必须区分深拷贝和浅拷贝。在您的例子中,testlist似乎是一个浅拷贝,因为对其中一个的更改也反映在另一个中。因此,您可能需要深入研究复制列表
例如:
或者更简单:
相关问题 更多 >
编程相关推荐