我是 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 函数映射到字符串列表和整数列表,得到了不同的结果。我不明白为什么 p1 和 p2 会有不同的行为。
请您参考如下方法:
map 返回一个 map 对象,该对象在耗尽时不会产生任何值。因此,当您第二次调用 list 到 ints 时,它将无法将该函数应用于任何内容,因此 list(map(print,list(ints ))) 将返回一个空列表[]
检查将 list 应用到同一个 map 对象两次时会发生什么:
>>> li=['12','34']
>>> ints=map(int,li)
>>> ints
<map object at 0x7f4e375c7898>
>>> list(ints)
[12, 34]
>>> list(ints)
[]
