filter是否保持列表顺序?

17 投票
2 回答
8694 浏览
提问于 2025-04-29 15:55

假设你在一个列表上使用了“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]

撰写回答