2015-07-20 89 views
5

在为Python 23之间itertools比较文档,我注意到ifilterimapizip从Python 3的失踪我怀疑这是因为许多内建的关键字都被转换为发电机和更换前的关键字,但在这个还不清楚案件。ifilter发生了什么事?

是真的ifilterimapizip现在相当于filtermapzip在Python 3?如果没有,我在哪里可以找到为什么某些方法从当前itertools中删除的理由?

回答

9

的Python 2.3引入的itertools模块,其限定该迭代器返回,而不是列出了全球zip()map(),和filter()功能变体。在Python 3中,这些全局函数返回迭代器,所以itertools模块中的这些函数已被删除。

enter image description here

  • 相反的itertools.izip(),只使用全局zip()功能。
  • 而不是itertools.imap(),只需使用map()
  • itertools.ifilter()变成filter()
  • itertools模块仍然存在于Python 3中,它只是没有已经迁移到全局名称空间的函数。 2to3脚本非常聪明,可以删除不再存在的特定导入,同时保持其他导入不变。

更多here

+1

很好的参考。谢谢! – pylang