2016-05-07 100 views
3

從我的Python控制檯打印列表理解

>>> numbers = [1,2,3] 
>>> [print(x) for x in numbers] 
1 
2 
3 
[None, None, None] 

爲什麼這請打印三個無是在結束了嗎?

+0

因爲'打印()'是​​python3返回一個函數'None' –

+0

Python解釋器總是打印您輸入的任何表達式的值。如果將其更改爲'r = [print(x)for x in number]',您會看到'r'現在包含'[None,None,None]'。 –

回答

3

列表理解不是手頭工作的正確工具。它總是會返回一個列表,並且假定print()的計算結果爲None,則該列表將填充None值。一個簡單的for循環效果更好,當我們不感興趣,創造價值的列表,只有在沒有返回值的評價函數:

for x in numbers: 
    print(x) 
1

print是Python 3中的一個函數,它返回一個None。由於您將其稱爲三次,因此它將構建三個None元素的列表。

2

print函數返回None。列表理解是將函數應用於列表的每個元素(輸出結果),但將這些對象收集到結果數組中。 Python解釋器正在打印該數組。

3

你應該調整你的循環發送參數print()

>>> numbers = [1,2,3] 
>>> print(*(x for x in numbers), sep='\n') 

請注意,您不需要顯式生成器。只要解list本身:

>>> numbers = [1,2,3] 
>>> print(*x, sep='\n') 
1

打印是一個函數,它就像

>>>def f(x): 
...: pass 
>>>[f(x) for x in numbers]