filter是否保持列表顺序?
假设你在一个列表上使用了“filter”这个函数,目的是找出所有符合某个条件的元素。那么,输出的列表里的元素顺序会和输入列表里的顺序一样吗?
2 个回答
13
来自于Python文档关于filter
的内容:
注意,
filter(function, iterable)
和生成器表达式(item for item in iterable if function(item))
是等价的。
因为这个等价的生成器表达式会保持顺序,所以filter
也一定会保持顺序。
28
简单来说,答案是肯定的。列表是有顺序的可迭代对象,而 filter
这个生成器会一个一个地按顺序读取每个项目。因此,它输出的结果也是有顺序的。
>>> example = list(range(10))
>>> list(filter(lambda n: n % 2, example))
[1, 3, 5, 7, 9]