在Python 3中通过成对列表映射二进制函数[重复]

问题描述 投票:1回答:1

这个问题在这里已有答案:

为什么我会使用Python2

>>> map(max,[1,2],[3,1])
[3, 2]

在Python3中

>>> map(max,[1,2],[3,1])
<map object at 0x10c2235f8>

?

什么应该取代Python3中的map(max,[1,2],[3,1])

我读到应该在Python3中使用列表理解但是

>>> [max(i,j) for i in [1,2] for j in [3,1]]
[3, 1, 3, 2]

没有给出想要的结果,也没有想到的变化。

python python-3.x
1个回答
1
投票

这是因为Python2为多个返回值返回List

来自Pydoc[2]

如果有多个参数,map()将返回一个由包含所有迭代中相应项的元组组成的列表(一种转置操作)。可迭代参数可以是序列或任何可迭代对象;结果始终是一个列表。

Python3返回Iterable

来自Pydoc[3]

返回一个迭代器,它将函数应用于每个iterable项,从而产生结果。


所以要在list获得Python3,只需:

list(map(...))

基本上:

>>> list(map(max,[1,2],[3,1]))
=> [3, 2]
© www.soinside.com 2019 - 2024. All rights reserved.