【问题标题】:Why does map(print, x) return "None" value list?为什么 map(print, x) 返回“None”值列表?
【发布时间】:2017-08-19 03:29:44
【问题描述】:

在 Python 3.5 中,代码

>>> T = map(print, [1, 2, 3])
>>> type(T)
<class 'map'>

返回一个地图对象。我希望这个地图对象 T 包含数字 1、2 和 3;都在不同的行。 实际上,这确实会发生。唯一的问题是它还会输出一个与输入列表长度相同的Nonevalues 列表。

>>> list(T)
1
2
3
[None, None, None]
>>> 

这对于我使用的任何输入都是可重复的,而不仅仅是上面显示的任意整数列表。 谁能解释一下为什么会这样?

【问题讨论】:

  • print 返回Nonemap 针对可迭代项收集函数的返回值。
  • print(print(1))
  • 为什么不呢?

标签: python dictionary printing nonetype


【解决方案1】:

另请参阅:
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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2022-11-15
    • 2013-08-14
    • 2020-09-23
    • 2020-02-07
    • 2011-11-10
    相关资源
    最近更新 更多