在Python 3.5中,代码
>>> T = map(print, [1, 2, 3])
>>> type(T)
<class 'map'>
返回一个地图对象。我希望这个地图对象T包含数字1,2和3;所有都在不同的线上。
实际上,这个会发生。唯一的问题是它还输出一个与输入列表长度相同的None
值列表。
>>> list(T)
1
2
3
[None, None, None]
>>>
对于我使用的任何输入,这都是可重复的,而不仅仅是上面显示的任意整数列表。 任何人都可以解释为什么会这样吗?
答案 0 :(得分:2)
另见:
https://stackoverflow.com/a/7731274
https://stackoverflow.com/a/11768129
https://stackoverflow.com/a/42399676
您看到的每个None
都是print
函数返回的内容。要了解map
的作用,请尝试以下代码:
>>> T = map(lambda x: x**2, [1, 2, 3])
>>> t = list(T)
>>> print(t)
[1, 4, 9]
当您使用print
时:
>>> T = map(print, [1, 2, 3])
>>> t = list(T)
1
2
3
>>> print(t)
[None, None, None]
这并不奇怪,因为:
>>> a = print("anything")
anything
>>> print(a)
None