ifilter发生了什么事?
问题描述:
在为Python 2和3之间itertools比较文档,我注意到ifilter
,imap
,izip
从Python 3的失踪我怀疑这是因为许多内建的关键字都被转换为发电机和更换前的关键字,但在这个还不清楚案件。ifilter发生了什么事?
是真的ifilter
,imap
,izip
现在相当于filter
,map
,zip
在Python 3?如果没有,我在哪里可以找到为什么某些方法从当前itertools
中删除的理由?
答
的Python 2.3引入的itertools
模块,其限定该迭代器返回,而不是列出了全球zip()
,map()
,和filter()
功能变体。在Python 3中,这些全局函数返回迭代器,所以itertools模块中的这些函数已被删除。
- 相反的
itertools.izip()
,只使用全局zip()
功能。 - 而不是
itertools.imap()
,只需使用map()
。 -
itertools.ifilter()
变成filter()
。 - itertools模块仍然存在于Python 3中,它只是没有已经迁移到全局名称空间的函数。 2to3脚本非常聪明,可以删除不再存在的特定导入,同时保持其他导入不变。
更多here
很好的参考。谢谢! – pylang