在Python 中,列表理解提供了一種基於現有可迭代物件建立列表的簡潔方法。然而,出現了涉及 if 語句的列表理解的問題。
目標是比較兩個可迭代物件 a 和 b,並僅列印兩者中出現的元素。預期的程式碼如下所示:
<code class="python">print([y if y not in b for y in a])</code>
不幸的是,此程式碼導致語法錯誤。問題在於 if-else 結構的順序。在 Python 中,條件語句必須位於列表理解中的 for 迴圈之後,除非它被用作三元運算子。
正確語法:
<code class="python">[y for y in a if y not in b]</code>
此程式碼迭代遍歷 a 中的每個元素 y。如果在 b 中未找到 y,則將其新增至清單。結果清單將包含出現在 a 和 b 中的元素。
替代三元運算子語法:
<code class="python">[y if y not in b else other_value for y in a]</code>
此程式碼使用三元運算子來指定如果在b 中找不到y,則使用替代值(other_value)。這種方法較不常見,通常在需要預設值時使用。
以上是Python 中的列表理解語法何時需要三元運算子?的詳細內容。更多資訊請關注PHP中文網其他相關文章!