我試圖通過刪除符合條件的列表中的那些元素來進行簡單列表篩選。循環遍歷列表並刪除符合某些條件的列表 - 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