2015-07-20 139 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