哪个PEP(设计文档)决定使用map(函数,可迭代)而不是实现list.map()



我想知道Python标准库中没有list.map((的原因。

还有一些替代方案,比如map(function,iterable(和list complexions。

我找不到解释选择map而不是实现list.map((的原因的PEP(设计文档(

假设我们有一个这样的列表:

foo = [1,2,3,4,5,6]

我相信这个代码:

foo.map(function)
# or
foo.map(lambda x: x*2)

比更可读

least_readable = list(map(lambda x: x*2, foo))
least_readable = list(map(multiply_by_two, foo))

这对我来说已经足够可读了

it_readable_enough_for_me = [multiply_by_two(x) for x in foo]

这个在我看来更可读,但并不存在:

does_not_exist = foo.map(multiply_by_two)

我相信,如果这不存在,那一定是有原因的

不仅仅是因为map(function,iterable(更通用。我想这背后一定有一个重要的原因,我不明白。

无。

PEP 201是有史以来第二个稳定实现的PEP,它说:

这种行为已经可以在Python中通过使用内置的map((函数来实现

map函数在bltinmodule.c中定义,并在提交a6c603中添加。以前的位置是itertoolsmodule.c,它最初是在2003年2月1日提交的96ef81中引入的。在此之前,没有任何政治公众人物添加此功能。

根据维基百科:

Python在1994年1月达到1.0版本。此版本中包含的主要新功能是功能编程工具lambdamapfilterreduce。Van Rossum指出;Python获得了lambda、reduce((、filter((和map((,这是由一位Lisp黑客提供的,他错过了它们并提交了工作补丁;。

最新更新