简单的地图功能错误

时间:2014-11-25 15:57:48

标签: python python-3.x built-in

我正在试用map函数,它给了我意想不到的输出:

map(lambda x: x, range(3))
<builtins.map at 0x7fc3f6c0ab70>

当我尝试使用map(lambda x: x, range(3))()进行调用时,表示map无法调用。

2 个答案:

答案 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页面上阅读此内容以及类似的更改。