>>> 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]
?
答案 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}}因此无,无,无,无