到目前为止,我对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)
时,为什么要获取内存位置而不是列表。
答案 0 :(得分:3)
map
不返回列表。它返回一个map
对象,该对象根据需要懒惰地产生结果:
print(type(map(int, [1])))
<class 'map'>
它也不会覆盖stringify方法,该方法会产生漂亮的打印结果。那可能是因为那将要求强制评估整个列表,并且如果程序中可接受的话,那么您一开始就不应该使用map
。除非您正在调试,否则在这种情况下使用list
可能会很好,除非您要处理的是无限列表。
如果要打印完整元素,请在打印之前将其放置在列表中,以强制显示它,或者使用严格的列表生成方法(例如列表理解)来明确强制它。