[英]If and else inside a one-line python loop
對不起,如果這么簡單; 正如我在其他地方搜索的那樣,但沒有人指出這個具體問題。 我想以一種使我的代碼緊湊的方式學習 python! 因此,為此,我嘗試使用單行(即短)循環而不是多行循環,特別是 for 循環。 當我嘗試在單行循環中使用單行 if 和 else 時出現問題。 它似乎不起作用。 例如,請考慮以下情況:
numbers = ... # an arbitrary array of integer numbers
over_30 = [number if number > 30 for number in numbers]
這是因為有問題的one-line if
確實需要else
跟隨它。 盡管如此,當我在上面的腳本中添加else
時(在if
之后): over_30 = [number if number > 30 else continue for number in numbers]
,它變成了另一個pythonic錯誤。
我知道問題實際上是單行 if 和 else,因為 python 需要確定一個應該分配給左手運算符的值。 但是,是否有針對上述模式的特定用例的解決方法?
它們是不同的語法。 您正在尋找的是:
over_30 = [number for number in numbers if number > 30]
這是一個條件列表理解。 else
子句實際上是一個無條件的列表推導式,結合了一個三元表達式:
over_30 = [number if number > 30 else 0 for number in numbers]
(在這里,你正在計算三元表達number if number > 30 else 0
)的每個number
的numbers
可迭代。
continue
將不起作用,因為這是三元表達式,您需要返回一些內容。
val1 if condition else val2
你可以試試這個方法:
over_30 = [number for number in numbers if number > 30]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.