首页 > 解决方案 > Python:使用地图功能打印元素

问题描述

我是 Python 新手,正在学习如何使用map函数。我遇到以下问题:

li=['12','34']
ints=map(int,li)
list(ints) #prints [12,34] OK
p1 = map(print,list(ints))
list(p1)   #prints [] WHY?
p2 = map(print, li)
list(p2)   #prints 12 34 [None, None] OK

我只是将print函数映射到字符串列表和整数列表并得到不同的结果。我不明白为什么会p1p2行为不同。

标签: pythonmap-function

解决方案


map返回一个地图对象,当用尽时不会产生值。因此,当您list第二次调用时,ints它将无法将该功能应用于任何内容,因此list(map(print,list(ints)))将返回一个空列表[]

list检查两次应用于同一地图对象时会发生什么:

>>> li=['12','34']
>>> ints=map(int,li)
>>> ints
<map object at 0x7f4e375c7898>
>>> list(ints)
[12, 34]
>>> list(ints)
[]

推荐阅读