过滤器是否保留列表排序?

Jes*_*ica 10 python filter

假设您在列表中调用"过滤器"函数,并使用它来查找满足特定属性的所有元素.输出列表中的元素是否保证与输入列表中的元素顺序相同?

Ale*_*ton 16

简单的答案是肯定的.列表是有序的迭代,并且filter生成器按顺序一次一个地读取每个项目.因此,它将按顺序产生输出.

>>> example = list(range(10))
>>> list(filter(lambda n: n % 2, example))
[1, 3, 5, 7, 9]
Run Code Online (Sandbox Code Playgroud)

  • @Jessica Tuples,字符串,OrderedDict,Queue,deque以及实现`collections.abcs.Sequence`的所有内容. (2认同)

小智 9

文档filter:

注意,这filter(function, iterable)相当于生成器表达式(item for item in iterable if function(item))

由于等效的生成器表达式将保留顺序,filter因此保证也保留它.