此问题已在此处有答案:
How do I clone a list so that it doesn't change unexpectedly after assignment?(24回答)
8天前关闭
我试图复制一个列表来对副本进行排序,但由于某种原因,它也对原始列表进行了排序。下面是代码部分。我使用调试器来弄清楚排序函数之后发生了什么。
p = [7,1,5,3,6,4]
copy = p
现在根据调试器,(copy = [7,1,5,3,6,4])然后我做
copy.sort(reverse = True)
但是现在copy和p = [7,6,5,4,3,1]我通过copy = p找到了解决方案。copy().但我不明白为什么原始列表也改变了。
1条答案
按热度按时间8ehkhllq1#
如果你希望第二个变量是另一个列表的唯一副本,你可以调用它的
copy
方法。例如:
否则,如果只执行
b = a
,那么b
只是对a
的引用,两者都指向同一个对象。顺便说一句,当列表不一定在原地时,对列表进行排序的惯用方法是使用
sorted
,i。e..sort()
是有用的,当你想避免创建一个你需要排序的列表的副本时,因为你只会在原始列表的项目按顺序排列后才处理它。