牛骨文教育服务平台(让学习变的简单)
博文笔记

python的for i in list 陷阱

创建时间:2017-06-07 投稿人: 浏览次数:2745
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

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

声明:该文观点仅代表作者本人,牛骨文系教育信息发布平台,牛骨文仅提供信息存储空间服务。