为什么用python中的map()函数列表理解可以返回None

时间:2014-11-26 12:13:11

标签: python

>>> counters = [1,2,3,4]
>>> 
>>> [print(i, end=', ') for i in map(inc, counters)]

4, 5, 6, 7, [None, None, None, None]

为什么此代码会打印[None, None, None, None]

2 个答案:

答案 0 :(得分:5)

因为print会返回None吗?

因此,打印已完成(4, 5, 6, 7,),然后返回列表推导([None, None, None, None]

您要做的是使用join:

>>> ', '.join(str(i) for i in map(inc, counters))
'4, 5, 6, 7'

或使用sep argument of print(我现在没有python3,但是这样:)

print(*map(inc, counters), sep=', ')

答案 1 :(得分:3)

print是一个函数,但它返回None,这就是为什么你没有

这样做

In [3]: [i for i in map(abs, counters)]
Out[3]: [1, 2, 3, 4]

In [7]: a = print(1234)
1234

In [11]: print(a)
None

[print(i, end=', ') for i in map(inc, counters)]

所以当你这样做时print打印i 1,2,3,4,,然后每次list comprehension返回None的输出1}}因此无,无,无,无