我想知道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版本。此版本中包含的主要新功能是功能编程工具
lambda
、map
、filter
和reduce
。Van Rossum指出;Python获得了lambda、reduce((、filter((和map((,这是由一位Lisp黑客提供的,他错过了它们并提交了工作补丁;。