Python 哪个PEP(设计文档)决定使用map(function,iterable)而不是实现list.map()

Python 哪个PEP(设计文档)决定使用map(function,iterable)而不是实现list.map(),python,dictionary,language-design,pep,Python,Dictionary,Language Design,Pep,我想知道为什么Python标准库中没有list.map() 还有其他选择,比如map(function,iterable)和列表理解 我找不到解释为什么选择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

我想知道为什么Python标准库中没有list.map()

还有其他选择,比如map(function,iterable)和列表理解

我找不到解释为什么选择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))

这对我来说已经足够容易理解了

it_readable_enough_for_me = [multiply_by_two(x) for x in foo]
这看起来更容易理解,但并不存在:

does_not_exist = foo.map(multiply_by_two)
我认为,如果这种情况不存在,那一定有原因

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

没有

第二个稳定实施的政治公众人物说:

在Python中,通过使用map()内置函数已经可以实现此行为

map
功能在中定义,在中添加。以前的位置是,最初于2003年2月1日引入。在此日期之前,没有政治公众人物添加此功能

根据:

Python在1994年1月达到了1.0版。此版本中包含的主要新功能是功能性编程工具
lambda
map
filter
reduce
。Van Rossum表示,“Python收购了lambda、reduce()、filter()和map(),这是一位Lisp黑客的功劳,他错过了它们并提交了工作补丁”

没有

第二个稳定实施的政治公众人物说:

在Python中,通过使用map()内置函数已经可以实现此行为

map
功能在中定义,在中添加。以前的位置是,最初于2003年2月1日引入。在此日期之前,没有政治公众人物添加此功能

根据:

Python在1994年1月达到了1.0版。此版本中包含的主要新功能是功能性编程工具
lambda
map
filter
reduce
。Van Rossum表示,“Python收购了lambda、reduce()、filter()和map(),这是一位Lisp黑客的功劳,他错过了它们并提交了工作补丁”


一般来说,
map
接受任何iterable,包括生成器和自定义对象。这是一个比特定的
list.map
灵活得多的实现。有趣的是,Pandas实际上支持您预期的语法。至于实际的PEP,我不太清楚它也不返回
列表
,因此它可以实现内存效率感知编码。@roganjosh我并不惊讶,他的预期语法在其他语言中很常见,但我们都知道Python是特殊的(无论好坏),我怀疑这可能归结为Guido的。我不确定所有这些决定是否都得到了政治公众人物的支持,但事实上,这正是我现在要追查的:)一般来说,
map
接受任何iterable,包括生成器和自定义对象。这是一个比特定的
list.map
灵活得多的实现。有趣的是,Pandas实际上支持您预期的语法。至于实际的PEP,我不太清楚它也不返回
列表
,因此它可以实现内存效率感知编码。@roganjosh我并不惊讶,他的预期语法在其他语言中很常见,但我们都知道Python是特殊的(无论好坏),我怀疑这可能归结为Guido的。我不确定所有这些决定是否都得到政治公众人物的支持,但事实上,这正是我现在要追查的:)你能澄清你对第一句话的观点吗?我看不出来。这样断章取义,你让它看起来像是OP询问的“这个行为”(即,
list.map
)。但事实并非如此。我的意思是,在第二份政治公众人物报告撰写时,这种行为已经存在,所以它要么是在第一份政治公众人物报告中添加的,要么根本不在政治公众人物报告中。你能澄清一下你对第一份引文的观点吗?我看不出来。这样断章取义,你让它看起来像是OP询问的“这个行为”(即,
list.map
)。但事实并非如此,我的意思是,在第二次政治公众人物撰写时,这种行为已经存在,因此它要么被添加到第一次政治公众人物中,要么根本不在政治公众人物中
does_not_exist = foo.map(multiply_by_two)