循环遍历列表并删除那些符合特定条件的人 - Python

时间:2015-12-18 08:20:25

标签: python loops filtering

我尝试通过删除满足条件的列表中的那些元素来尝试简单的列表过滤。

 >>> 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]

在这种情况下,更自然(在我看来)列表过滤的实现不起作用......你如何控制这种操作?

谢谢!

1 个答案:

答案 0 :(得分:-4)

只需使用内置函数filter()

>>> filter(lambda x: x % 2, numbers)
[103, 105, 107]