在Python 中,列表理解提供了一種基於現有可迭代物件建立清單的簡潔方法。然而,出現了一個關於涉及 if 語句的列表理解的問題。
目標是比較兩個可迭代物件 a 和 b,並僅列印兩者中出現的元素。預期的程式碼如下所示:
print([y if y not in b for y in a])
不幸的是,這段程式碼導致了語法錯誤。問題在於 if-else 結構的順序。在 Python 中,條件語句必須位於列表理解中的 for 迴圈之後,除非它被用作三元運算子。
正確語法:
[y for y in a if y not in b]
此程式碼迭代a 中的每個元素y。如果在 b 中未找到 y,則將其新增至清單。結果清單將包含出現在 a 和 b 中的元素。
替代三元運算子語法:
[y if y not in b else other_value for y in a]
此代碼使用三元運算子指定替代值(other_value),以防在b 中找不到y。這種方法較不常見,通常在需要預設值時使用。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3