從我的Python控制檯打印列表理解
>>> numbers = [1,2,3]
>>> [print(x) for x in numbers]
1
2
3
[None, None, None]
爲什麼這請打印三個無是在結束了嗎?
從我的Python控制檯打印列表理解
>>> numbers = [1,2,3]
>>> [print(x) for x in numbers]
1
2
3
[None, None, None]
爲什麼這請打印三個無是在結束了嗎?
列表理解不是手頭工作的正確工具。它總是會返回一個列表,並且假定print()
的計算結果爲None
,則該列表將填充None
值。一個簡單的for
循環效果更好,當我們不感興趣,創造價值的列表,只有在沒有返回值的評價函數:
for x in numbers:
print(x)
print
是Python 3中的一個函數,它返回一個None
。由於您將其稱爲三次,因此它將構建三個None
元素的列表。
print
函數返回None
。列表理解是將函數應用於列表的每個元素(輸出結果),但將這些對象收集到結果數組中。 Python解釋器正在打印該數組。
你應該調整你的循環發送參數print()
:
>>> numbers = [1,2,3]
>>> print(*(x for x in numbers), sep='\n')
請注意,您不需要顯式生成器。只要解list
本身:
>>> numbers = [1,2,3]
>>> print(*x, sep='\n')
打印是一個函數,它就像
>>>def f(x):
...: pass
>>>[f(x) for x in numbers]
因爲'打印()'是python3返回一個函數'None' –
Python解釋器總是打印您輸入的任何表達式的值。如果將其更改爲'r = [print(x)for x in number]',您會看到'r'現在包含'[None,None,None]'。 –