gpt4 book ai didi

python - itertools.ifilter 对比过滤器对比列表推导

转载 作者:IT老高 更新时间:2023-10-28 20:21:06 26 4
gpt4 key购买 nike

我正在尝试更加熟悉 itertools 模块,并找到了一个名为 ifilter 的函数。

据我了解,它根据给定的函数进行过滤和迭代,并在包含迭代元素的列表上返回一个迭代器,该函数在其上计算为 True

问题 1:到目前为止我的理解是否正确?

问题2:除了this返回和迭代器之外,它与内置的filter函数有什么不同?

问题 3哪个更快?

据我所知,事实并非如此。我错过了什么吗? (我进行了以下测试)

>>> itertools.ifilter(lambda x: x%2, range(5))
<itertools.ifilter object at 0x7fb1a101b210>
>>> for i in itertools.ifilter(lambda x: x%2, range(5)): print i
...
1
3
>>> filter(lambda x: x%2, range(5))
[1, 3]
>>> function = lambda x: x%2
>>> [item for item in range(5) if function(item)]
[1,3]

最佳答案

你的理解是对的:唯一的区别是ifilter返回的是一个迭代器,而使用filter就像调用:

list(ifilter(...))

您可能还对 PEP 289 感兴趣说过滤器和 ifilter:

List comprehensions greatly reduced the need for filter() and map(). Likewise, generator expressions are expected to minimize the need for itertools.ifilter() and itertools.imap(). [...]

另请注意,ifilter 在 Python-3 中变为 filter(因此从 itertools 中删除)。

关于python - itertools.ifilter 对比过滤器对比列表推导,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8994319/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com