我正在试用map
函数,它给了我意想不到的输出:
map(lambda x: x, range(3))
<builtins.map at 0x7fc3f6c0ab70>
当我尝试使用map(lambda x: x, range(3))()
进行调用时,表示map
无法调用。
答案 0 :(得分:4)
我认为您正在寻找的是
>>> list(map(lambda x: x, range(3)))
[0, 1, 2]
map
返回一个迭代器。您看到的消息只是您刚刚为其创建实例的对象类型
>>> map(lambda x: x, range(3))
<map object at 0x02E11F10>
答案 1 :(得分:4)
这不是错误。
相反,它是map
in Python 3.x返回的map
对象(迭代器)的表示形式:
>>> # Python 3.x interpreter
>>> map(lambda x: x, range(3))
<map object at 0x01AAA2F0>
>>> type(map(lambda x: x, range(3)))
<class 'map'>
>>>
请注意,我的输出不完全相同,因为我使用的是不同的实现。不过,同样的原则也适用。
map
in Python 2.x同时返回一个列表:
>>> # Python 2.x intepreter
>>> map(lambda x: x, range(3))
[0, 1, 2]
>>>
但在现代Python中,如果需要列表结果,则需要将map
对象显式转换为一个:
>>> # Python 3.x interpreter
>>> list(map(lambda x: x, range(3)))
[0, 1, 2]
>>>
您可以在Python的What's New in Python 3.0页面上阅读此内容以及类似的更改。