生活随笔
收集整理的這篇文章主要介紹了
Python的map、filter、reduce函数
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
Python的map、filter、reduce函數
map函數func作用于給定序列的每個元素,并用一個列表來提供返回值。
map函數python實現代碼:
| def map(func,seq):? ????mapped_seq = []? ????for eachItem in seq:? ????????mapped_seq.append(func(eachItem))? ????return mapped_seq |
?
filter函數的功能相當于過濾器。調用一個布爾函數bool_func來迭代遍歷每個seq中的元素;返回一個使bool_seq返回值為true的元素的序列。
?
filter函數python代碼實現:
?
| def filter(bool_func,seq):? ????filtered_seq = []? ????for eachItem in seq:? ????????if bool_func(eachItem):? ????????????filtered_seq.append(eachItem)? ????return filtered_seq |
?
reduce函數,func為二元函數,將func作用于seq序列的元素,每次攜帶一對(先前的結果以及下一個序列的元素),連續的將現有的結果和下一個值作用在獲得的隨后的結果上,最后減少我們的序列為一個單一的返回值。
?
reduct函數python代碼實現:
?
| def reduce(bin_func,seq,initial=None):? ????lseq = list(seq)? ????if initial is None:? ????????res = lseq.pop(0)? ????else:? ????????res = initial? ????for eachItem in lseq:? ????????res = bin_func(res,eachItem)? ????return res |
?
下面是測試的代碼
?
| #coding:utf-8 def map_func(lis): ????return lis + 1 def filter_func(li): ????if li % 2 == 0: ????????return True ????else: ????????return False ???????? def reduce_func(li, lis): ????return li + lis ???? li = [1,2,3,4,5] map_l = map(map_func, li) #將li中所有的數都+1 filter_l = filter(filter_func, li) #得到li中能被2整除的 reduce_l = reduce(reduce_func, li) #1+2+3+4+5 print map_l print filter_l print reduce_l |
運行結果如下:
?
C:\>python test1.py
?
[2, 3, 4, 5, 6]
?
[2, 4]
?
15
posted on
2012-04-25 17:52 linyawen 閱讀(
...) 評論() 編輯 收藏
轉載于:https://www.cnblogs.com/linyawen/archive/2012/04/25/2470201.html
總結
以上是生活随笔為你收集整理的Python的map、filter、reduce函数的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。