帶有條件語句的列表推導式
在 Python 中,列表推導式提供了一種產生新列表的緊湊方式。但是,在這些推導式中使用條件語句時,遵守正確的語法以避免錯誤至關重要。
問題:比較可迭代對象
假設我們有兩個可迭代對象,一個和b,我們想要創建一個新列表,其中包含出現在兩個可迭代物件中的元素。我們嘗試使用以下程式碼:
<code class="python">a = ('q', 'r') b = ('q') print([ y if y not in b for y in a])</code>
語法錯誤
但是,此程式碼會產生無效語法錯誤,表明理解中使用的lambda 函數存在問題.
解:重新排序推導式
在列表推導式中使用條件語句的正確語法是將if 表達式放在for 子句之後。在我們的例子中,更正後的程式碼將是:
<code class="python">[y for y in a if y not in b]</code>
此理解將迭代 a 並僅當元素不存在於 b 中時才將元素新增至新清單。結果應該產生 ['r'],如預期。
替代語法
或者,我們可以使用if-else 三元運算子來處理其中的條件邏輯清單理解:
<code class="python">[y if y not in b else None for y in a]</code>
此程式碼將建立一個新列表,其中新增b 中不存在的元素,而其他元素接收None 值。
以上是Python 列表推導式中條件語句的正確語法是什麼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!