下面代碼中錯誤的語法是什麼?這條線不應該工作嗎?有人可以解釋爲什麼它不工作,什麼是正確的語法。Python一行if else
return [ True for x in numbers if x == 3 else False ]
下面代碼中錯誤的語法是什麼?這條線不應該工作嗎?有人可以解釋爲什麼它不工作,什麼是正確的語法。Python一行if else
return [ True for x in numbers if x == 3 else False ]
你只需要
[ x == 3 for x in numbers ]
這將遍歷每個元素numbers
並將其與3
,返回True
或每個元素的False
。 (請注意,有沒有必要使用if...else
結構時,你只返回True
和False
的==
運營商已經做到這一點。)
例如:
>>> numbers = [ 1, 2, 3, 4, 5 ]
>>> [ x == 3 for x in numbers ]
[False, False, True, False, False]
你的語法不正確,因爲if
語句之後的for
循環在列表生成器中用於過濾元素。例如:
>>> [ True for x in numbers if x == 3 ]
[True]
在這種情況下,不符合標準if x == 3
元件不包括在輸出的。
在特定情況下,這可以替代。但這種方法是有限的只有一個二進制值,而不是在一個列表生成三元操作符的替代品。 –
,如果你需要使用列表生成三元運算符:
[ True if x == 3 else False for x in numbers ]
「*有人可以解釋爲什麼它不工作,... *「這是怎麼回答這個問題? –
這解決了一個列表生成使用三元運營商的問題。而且它不爲明顯的原因工作,在發電機的條件被用作過濾器,但其間插入三元運算 –
如果它是一個明顯的* *理由,那麼爲何OP要求是什麼? –
'for'後面的'if'是**用於過濾**。 –
它不工作,因爲語法錯誤。解決方案是查找語法。 – timgeb
'如果... else'應... 或者使用'[X == 3對數x]是前''for'足夠 – LoicM