为什么使用地图时会得到<map object =“” at =“” 0x0389dcd0 =“”>

时间:2019-01-03 16:03:12

标签: python python-3.x

到目前为止,我对map函数的理解是,它将给定函数以可迭代的方式应用于每个项目,并返回结果列表。

def square(num):
    return num**2

list_num = [1,2,3,4]

以上述功能和数字列表为例。

如果我们:list(map(square,list_num)),我们将得到输出[1,4,9,16]

如果我是

,现在我无法找到明智的解释。

print(map(square,list_num))我将得到输出<map object at 0x038B0290>

我的问题是,当我使用print()函数或使用map(square,list_num)时,为什么要获取内存位置而不是列表。

1 个答案:

答案 0 :(得分:3)

map不返回列表。它返回一个map对象,该对象根据需要懒惰地产生结果:

print(type(map(int, [1])))
<class 'map'>

它也不会覆盖stringify方法,该方法会产生漂亮的打印结果。那可能是因为那将要求强制评估整个列表,并且如果程序中可接受的话,那么您一开始就不应该使用map。除非您正在调试,否则在这种情况下使用list可能会很好,除非您要处理的是无限列表。

如果要打印完整元素,请在打印之前将其放置在列表中,以强制显示它,或者使用严格的列表生成方法(例如列表理解)来明确强制它。