列表中有些奇怪

时间:2016-05-05 10:22:44

标签: python

我在下面的代码中得到了一个奇怪的结果。

mylist = [1,2,3,4,5,6,7,8,9,10]

for i in mylist:
    mylist.remove(i)

print (mylist)

以某种方式生成[2,4,6,8,10]。如果我想删除所有,我会使用“clear()”。但是,我只对正在发生的事情感兴趣。我是否为系统偏好做错了什么?谢谢您的帮助。

1 个答案:

答案 0 :(得分:-1)

仅供将来参考,使用Python 2.7 this is the explanation you are looking for

  

循环修改序列时有一个微妙之处   (这只能发生在可变序列,即列表中)。一个内部   counter用于跟踪下一个使用的项目,这是   每次迭代时递增。当这个计数器到达时   循环终止的序列长度。这意味着,如果   suite从序列中删除当前(或前一个)项目   将跳过下一个项目(因为它获取当前项目的索引   已经治疗了)。同样,如果套件插入一个   当前项目之前的序列中的项目,当前项目将是   下一次循环再次治疗。