即日起在codingBlog上分享您的技术经验即可获得积分,积分可兑换现金哦。

python的for i in list 陷阱

编程语言 Silly2016 80℃ 0评论
d = [1,2,3,4,5]
for i in d:
    d.remove(i)
print d

结果是 :

[2, 4]

这个陷阱比较隐蔽,我再用白盒子测试的时候,发现了这个bug,大致原因就是remove d[0]之后,i 自动变成了 d[1], 但是 d已经变成了 d[2,3,4,5],所以i=d[1]就悲催的指向了3,跳过了2!

看来python还是要注意了解底层实现啊!

解决办法是:

d = [1,2,3,4,5]
temp = []
for i in d:
    if somecase:
        pass
      else:
        d.append(i)
print d

就可以实现边遍历边删除了

转载请注明:CodingBlog » python的for i in list 陷阱

喜欢 (0)or分享 (0)
发表我的评论
取消评论

*

表情