python的for i in list 陷阱

xiaoxiao2021-02-28  92

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

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

转载请注明原文地址: https://www.6miu.com/read-65804.html

最新回复(0)