在Python 中,列表推導式提供了一種將可迭代元素轉換為新列表的優雅方法。然而,將包含 if/else 語句的傳統 for 迴圈轉換為列表推導式可能會很棘手。
問題陳述:
考慮以下for 循環:
results = [] for x in xs: results.append(f(x) if x is not None else '')
目標是如果x 為None 則為'',否則使用列表為f(x)理解。試著將其寫為:
[f(x) for x in xs if x is not None else '']
會導致語法錯誤。正確的語法是什麼?
解:
解在於列表理解中元素的排序。正確的語法是:
[f(x) if x is not None else '' for x in xs]
泛化:
一般來說,對於帶有if/else 條件表達式的列表推導式,語法是:
[f(x) if condition else g(x) for x in sequence]
對於僅包含if 條件的列表推導式(不包括else子句),語法簡化to:
[f(x) for x in sequence if condition]
區分基於條件過濾元素的列表推導式和基於條件求值為指定值的條件表達式非常重要。
以上是如何在 Python 列表推導式中正確使用 if/else?的詳細內容。更多資訊請關注PHP中文網其他相關文章!