從Python 2 到3 的過渡中,filter、map 和reduce的行為發生了實質性的變化.
視圖和迭代器而不是列表
為了提高效率,映射和過濾器現在返回迭代器而不是列表。例如,在 Python 2 中,filter(f, range(2, 25)) 傳回過濾值的列表,而在 Python 3 中,它會傳回迭代器。一個簡單的修復方法是使用 list(map(...)) 將迭代器明確轉換為列表,但更優雅的解決方案通常涉及列表推導式或重構程式碼以消除對列表的需求。
刪除了reduce
Python 3 刪除了內建的reduce 函數。相反,它建議在必要時使用 functools.reduce。然而,如文件所指出的,顯式 for 迴圈通常更具可讀性,並且適合 99% 的情況。
結論
這些變更旨在提高效率和Python 3 內建函數的設計。透過遵循文件中提供的指導,開發人員可以有效地利用迭代器和替代方法在 Python 3 中實現與 Python 2 程式碼類似的功能。
以上是從 Python 2 到 Python 3,「filter」、「map」和「reduce」是如何改變的?的詳細內容。更多資訊請關注PHP中文網其他相關文章!