python的for i in list 陷阱

来源:互联网 发布:披甲龙龟事件知乎 编辑:程序博客网 时间:2024/06/04 21:29
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[:]:   d.append(i)print d

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

原创粉丝点击