This question already has answers here:
Getting a map() to return a list in Python 3.x
(9个答案)
2年前关闭。
为什么要使用Python2
和在Python3中
?
什么应该替换Python3中的
我读到一个人应该在Python3中使用列表理解,但是
不能提供理想的结果,也不会想到任何变化。
基本上:
(9个答案)
2年前关闭。
为什么要使用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]
不能提供理想的结果,也不会想到任何变化。
最佳答案
这是因为Python2
为多个返回值返回一个List
。
从Pydoc[2]:
如果有多个参数,则map()返回一个包含以下内容的列表
包含所有可迭代对象(一种
转置操作)。可迭代的参数可以是一个序列或
任何可迭代的对象;结果总是一个列表。
而Python3
返回一个Iterable
。
从Pydoc[3]:
返回一个将函数应用于所有可迭代项的迭代器,
产生结果。
因此,要获取list
中的Python3
,只需执行以下操作:
list(map(...))
基本上:
>>> list(map(max,[1,2],[3,1]))
=> [3, 2]
关于python - 在Python 3中将二进制函数映射到成对的列表上,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47917657/
10-12 18:25