我试图通过删除符合条件的列表中的那些元素来进行简单列表筛选。循环遍历列表并删除符合某些条件的列表 - Python
>>> a = ["a" , "e" , "i" , "o" , "u"]
>>> for elem in a:
... a.remove(elem)
在这种情况下,我不过滤,我试图删除所有元素。但是,如果我print a
这是我所看到的:
>>> print a
["e" , "o"]
它不可能通过这种方式消除阵列中的所有元素。 Python删除元素,重新分配索引,然后增加它。所以,Python在每次迭代中跳过一个元素。如果它不适用于最简单的情况,我怎样才能正确实现列表过滤?
>>> numbers = [100 , 102 , 103 , 105 , 107, 108, 110, 120]
>>> for elem in numbers:
... if elem % 2 == 0:
... numbers.remove(elem)
...
>>> numbers
[102, 103, 105, 107, 110]
在这种情况下,更自然的(在我看来)执行列表过滤不工作...你如何控制这种操作的?
谢谢!
对于为何移除元素形成当前正在遍历序列的例证是坏看到我的答案[这里](http://stackoverflow.com/a/31704332/1318181) – IanAuld