为什么循环3次就结束了

img


为什么这个是循环3次就结束了,不应该是遍历列表然后结束吗?循环6次

img


因为这里你每循环一次就把列表里最大的元素删除掉,到了第三次的时候只剩下3个元素了,所以只循环3次
有帮助的话请采纳一下呀

img

解决办法, for i in ss[:]: 遍历对象后加一个[:],表示它的副本,这样就能得到你想要的结果了
对比两种效果:

>>> ss = [2,3,6,9,7,1]
>>> for i in ss:
    print(ss)
    ss.remove(max(ss))

    
[2, 3, 6, 9, 7, 1]
[2, 3, 6, 7, 1]
[2, 3, 6, 1]
>>> ss
[2, 3, 1]


>>> ss = [2,3,6,9,7,1]
>>> for i in ss[:]:
    print(ss)
    ss.remove(max(ss))

    
[2, 3, 6, 9, 7, 1]
[2, 3, 6, 7, 1]
[2, 3, 6, 1]
[2, 3, 1]
[2, 1]
[1]
>>> ss
[]