簡體   English   中英

if 和 else 在單行 python 循環中

[英]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 )的每個numbernumbers可迭代。

continue將不起作用,因為這是三元表達式,您需要返回一些內容。

val1 if condition else val2

你可以試試這個方法:

over_30 = [number for number in numbers if number > 30]

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM