作者yungyuc (酷狗喵千代)
看板Python
标题Re: [问题] 奇怪的问题...
时间Thu Mar 27 10:11:03 2008
※ 引述《Yawper (J'en ai marre!)》之铭言:
: 想请教一个for loop的问题
: [0.20000000000000001, 0.29999999999999999, 0.29999999999999999, 0, 0, 0, 0, 0]
: ... if p==0:
: ... l.remove(p)
: ...
: [0.20000000000000001, 0.29999999999999999, 0.29999999999999999, 0, 0]
: 为甚麽这个for loop只能remove掉三个0呢?
: 如果我想把这个list中所有等於0的object都移除的话要怎麽修改呢?
: 谢谢
会有 element 被跳过:
>>> a = range(10)
>>> for p in a:
... if p%2:
... a.remove(p)
... print a
... else:
... print a.index(p)
...
0
[0, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 5, 6, 7, 8, 9]
[0, 2, 4, 6, 7, 8, 9]
[0, 2, 4, 6, 8, 9]
[0, 2, 4, 6, 8]
如上,2, 4, 6, 8 都没有被 iterate 到。
结论,不要在 for 里面删被 iterate container 的元素。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 164.107.248.238
1F:推 Yawper:原来如此 虽然不了解为何会被跳过 但还是谢谢 =.= 03/27 13:34