ifilter怎么了?

时间:2015-07-20 05:34:56

标签: python-2.7 python-3.x built-in

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

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

1 个答案:

答案 0 :(得分:11)

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