爲什麼print(x)
這裏無效(SyntaxError
)在下面的列表理解?列表理解:爲什麼這是一個語法錯誤?
my_list=[1,2,3]
[print(my_item) for my_item in my_list]
對比 - 以下不給一個語法錯誤:
def my_func(x):
print(x)
[my_func(my_item) for my_item in my_list]
爲什麼print(x)
這裏無效(SyntaxError
)在下面的列表理解?列表理解:爲什麼這是一個語法錯誤?
my_list=[1,2,3]
[print(my_item) for my_item in my_list]
對比 - 以下不給一個語法錯誤:
def my_func(x):
print(x)
[my_func(my_item) for my_item in my_list]
由於打印是不是一個函數,這是一個語句,你不能讓他們的表情。如果使用普通的Python 2語法,這會變得更加明顯:
my_list=[1,2,3]
[print my_item for my_item in my_list]
這看起來不太正確。 :)圍繞my_item的括號會欺騙你。
這已經改變了在Python 3中,順便說一句,其中打印是函數,其中你的代碼工作得很好。
這是一個語法錯誤,因爲print
不是函數。這是一個聲明。既然你顯然不從print
關心的返回值(因爲它有沒有),只寫正常的循環:
for my_item in my_list:
print my_item
列表理解的目的是創建一個列表。因此,無論我們使用print()還是使用2.7或3.x打印,在其中使用print都會給出錯誤。代碼
[my_item for my_item in my_list]
產生一個新的對象類型列表。
print [my_item for my_item in my_list]
打印出這個新的列表作爲一個整體
參考:here
*「無論我們使用print()還是打印2.7或3.x」*這隻適用於python 2.x,不適用於python 3.x. '[print(char)for char in「abc」]'在python 3.x中是有效的(但不鼓勵) – jDo 2016-04-28 19:22:17
您可以從以後導入該功能:'從__future__進口print_function' – 2010-01-26 17:16:13
@ THC4k - 我同意,這將使確保代碼可以編譯* * 2.6和3.0 – 2010-01-26 17:20:45
正確的,因爲它明確提到2.6,這是一個很好的觀點。 – 2010-01-26 22:33:03