在Python 2中,filter、map和reduce函數提供了操作資料的簡潔方法收藏。然而,這些函數在Python 3中發生了重大變化。
filter和map現在傳回迭代器,而不是回傳列表。這項變化符合 Python 3 倡導懶惰和高效的設計理念。迭代器透過根據需要產生元素來節省記憶體並提高效能,而不是提前建立整個清單。
要獲得與過濾器或映射結果等效的列表,可以使用list() 函數如下:
filtered_list = list(filter(f, range(2, 25))) mapped_list = list(map(cube, range(1, 11)))
Python 3 已刪除了reduce 函數。它已被降級為 functools 模組,稱為 functools.reduce()。這項改變是由圍繞使用reduce 的誤解引發的。在大多數情況下,顯式 for 迴圈被認為更具可讀性和效率。
請注意,functools.reduce() 與 Python 2 中的 reduce 具有相同的用途。但是,如果您的程式碼嚴重依賴 reduce,請重新造訪它建議探索替代方法(例如明確 for 迴圈或高階函數)。
透過接受這些更改,您可以使您的 Python 程式碼適應最新版本並採取其在效能和可讀性方面的改進優勢。
以上是Python 3 的「filter」、「map」和「reduce」有何變化,以及如何調整我的程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!