ifilter怎么了?

What happened to ifilter?

在比较 Python 2 and 3 之间的 itertools 文档时,我注意到 ifilterimapizip 在 Python 3 中缺失.我怀疑这是因为许多内置关键字已转换为生成器并替换了以前的关键字,但在这种情况下尚不清楚。

是吗 ifilterimapizip 现在等同于 [=25] 中的 filtermapzip =] 3?如果不是,我在哪里可以找到为什么某些方法从当前 itertools?

中删除的原因

Python 2.3 引入了 itertools 模块,它定义了全局 zip()map()filter() 函数的变体 returned 迭代器而不是列表。在Python3中,那些全局函数return迭代器,所以itertools模块中的那些函数已经被淘汰了。

  • 而不是 itertools.izip(),只需使用全局 zip() 函数。
  • 而不是itertools.imap(),只需使用map()
  • itertools.ifilter() 变为 filter().
  • itertools模块在Python3中仍然存在,只是没有迁移到全局命名空间的功能。 2to3 脚本足够聪明,可以删除不再存在的特定导入,同时保持其他导入不变。

阅读更多here