如何解决哪个PEP设计文档决定使用map函数,可迭代而不是实现list.map
我想知道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()并提交了有效补丁”。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。