理解Python 中函數式工具的演變:filter、map 與reduce
在Python 3 中,filhonter、map、與Python 2中的對應函數相比,Reduce 和Reduce 函數發生了重大變化。這可能會導致習慣了先前語法的使用者感到困惑,而
對filter和map的變更
在Python 3中,filter和map都傳回迭代器而不是列表。這是從產生具體資料結構轉向提供更有效率、更節省記憶體的視圖的結果。如果需要取得清單作為結果,可以使用 list() 函數轉換迭代器,例如列表(過濾器(f,範圍(2, 25)))。然而,更好的解決方案是考慮列表推導式或重新編寫程式碼以消除對列表的需求。
刪除reduce
Python 3 已刪除內建的- 在減少功能。相反,如果需要,使用者應該使用 functools.reduce 函數。但是,需要注意的是,在大多數情況下,顯式 for 迴圈提供了更具可讀性和更有效率的替代方案。
範例程式碼修改
適應提供的Python 2程式碼改為Python 3,以下改動是必要:
# Python 2 filter(f, range(2, 25)) map(cube, range(1, 11)) reduce(add, range(1, 11)) # Python 3 list(filter(f, range(2, 25))) list(map(cube, range(1, 11))) functools.reduce(add, range(1, 11))
結論
透過了解Python 3中的這些變化,開發人員可以避免意外並編寫有效利用該語言中可用的功能工具的程式碼。
以上是Python 的「filter」、「map」和「reduce」函數在 Python 3 中有何變化?的詳細內容。更多資訊請關注PHP中文網其他相關文章!