微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决哪个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版。此发行版中包含的主要新功能是功能编程工具lambdamapfilterreduce。范·罗瑟姆(Van Rossum)表示:“ Python是由Lisp黑客提供的,他们错过了Lambda,reduce(),filter()和map()并提交了有效补丁”。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。