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]
for i in d[:]:
d.remove(i)
print d
就可以实现边遍历边删除了
本文探讨了在Python中遍历列表并同时删除元素时出现的常见问题。通过具体示例说明了为何直接在循环中使用remove方法会导致部分元素被跳过,并提供了一种简单有效的解决方案。
1109





