首页 > 解决方案 > 更改一个列表恰好更改了备份列表

问题描述

这是我的代码:

x,y= int(input()),list(map(int, input().split(" "))) ; y_2=y
for i in range(int(x/2)): 
    print(y_2.index(min(y)),y_2.index(max(y)))
    del y[y.index(min(y))]
    del y[y.index(max(y))]

当我检查 y 时,它改变了,这就是我想要的。但是随后,我的备份列表 y_2 也发生了变化。这是为什么?

标签: python

解决方案


这是因为您将 y_2 设置为与 y 相同的列表。该列表是一个对象,您创建了对该对象的两个引用。如果要创建列表的独立副本,可以使用 y_2 = list(y),或者在更复杂的情况下使用复制模块。

顺便说一句,请将第一行更改为三行;这将极大地提高可读性。


推荐阅读