问题描述
我想知道Python标准库中没有list.map()的原因。
还有其他选择,例如map(function,iterable)和列表理解。
我找不到说明为什么选择地图而不是实现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,说:
通过使用内置的map()函数,该行为已经可以在Python中完成
map
函数在bltinmodule.c
中定义,并在commit a6c603中添加。先前的位置是itertoolsmodule.c
,该位置最初是在2003年2月1日在commit 96ef81中引入的。到目前为止,还没有PEP会添加此功能。
根据Wikipedia:
Python于1994年1月到达1.0版。此发行版中包含的主要新功能是功能编程工具
lambda
,map
,filter
和reduce
。范·罗瑟姆(Van Rossum)表示:“ Python是由Lisp黑客提供的,他们错过了Lambda,reduce(),filter()和map()并提交了有效补丁”。