This question already has answers here:
Getting a map() to return a list in Python 3.x
                                
                                    (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