我对使用python进行函数式编程感兴趣,并且正在研究Mary Rose Cook的博客文章 函数式编程的实用介绍 。
显然,它是用python 2编写的,如下所示:
name_lengths = map(len, ["Mary", "Isla", "Sam"]) print name_lengths # => [4, 4, 3]
在Python 3中产生以下结果:
<map object at 0x100b87a20>
我有两个问题:
如所述,在迁移指南中,
在Python 2中,map()返回一个列表,而在Python 3中,它返回一个迭代器。
Python 2:
将函数应用于所有iterable项,并返回结果 列表 。
Python 3:
返回一个迭代器,该迭代器将函数应用于所有可迭代项,并产生结果。
Python 2始终等效于list(imap(...)),Python 3允许进行惰性求值。
list(imap(...))