Python map, reduce, filter和sorted

發表於2016-06-06

map


python的map 函式使得函式能直接以list的每個元素作為引數傳遞到funcname中, 並返回響應的新的list
如下:

在需要對list中的每個元素做轉換的時候, 會很方便

比如,把list中的每個int 轉換成str

當然, 第二個引數是list, 也可以是tuple 或者是set類list結構的, dict 是不行的,不過返回的結果都是list

這裡順便說一下, dict的結構是用{} 表示的,如

是直觀的key-value形式, 那麼如果{}中的是一個類list的結構呢, 如:

其實, 這就是set的最終返回形式, 等價於:

那麼, 自然{}有重複值得時候也會去重

reduce

與map相比 , reduce類似於一個聚合類的應用方法, 把list中的引數, 依次傳遞給funcname, 每次funcname的引數都是上個funcname 執行結果和下一個list中的元素, 所以, funcname 的 引數必須是兩個. 從執行過程看, 有點像遞迴

例如: 求range(1, 101)(不包括101)的和,

filter

執行過程依次將list中的元素傳遞到funcname函式中, 根據funcname返回的True或False 保留或丟棄元素

例: 返回某個list中的所有int資料

sorted

排序方法, 第二個是可選引數, 根據可選引數返回的值, 對結果進行排序, comp_func 接受兩個引數(x, y), 最終返回的結果應該是-1.0,1, 如果返回的是-1, 表示x , 0表示x=y, 1表示x>y, 所以, 實際的排序可以自定義
預設是正序排序:

如果是需要倒序排列, 自定義方法:

PS: 以上為學習筆記, 如有錯誤, 還望指正
參考:廖雪峰Python教程

相關文章