map、filter、reduce函數

map函數(原有數據上處理,加工)

map(func,iterable)函數接收兩個參數:一個是函數,一個是iterable( 列表,字符串 等 )作用:map將傳入的函數依次作用於序列的每個元素,返回一個新的序列 


example:

li = [1,2,3,4,5,6,7,8,9,0]
print(li)
def add_one(x):
    x = x+1+1
    return x
lambda x:x+1
res = map(add_one,li)
# res = map(lambda x:x+1,li)
print(res)
# for item in res:
#     print(item)
#     
v = list(res)
print(v)
#----------------------------------------------------------------------------
msg = 'shaozonglin'
lambda x:x.upper()
res = map(lambda x:x.upper(), msg)
v = list(res)
print(v)

就是把可迭代對象的每個元素,一次作爲參數傳遞到函數中。最終將結果以列表的形式輸出

filter函數(篩選)

filter(func,iterable)用於過濾,就是把可迭代對象中的每個元素,使用func進行校驗,把不滿足條件的過濾掉。原則上func只返回True或者flase即可,python中非0 非空 也可表示true也可。


example:

student = ['huangyinpei', 'jimengkang', 'lichen', 'zhuzhikang']
v = filter(lambda x:x.endswith('g'),student)
print(v)
a = list(v)
print(a)


reduce函數(數據合併處理,得到一個處理過的結果)

這個函數的運行是一個累積的過程。reduce(func,iterable) 就是先在可迭代的對象中取前兩個元素,作爲參數由func進行計算,得到一個結果;然後再在可迭代對象中取第三個元素  和 剛纔的計算結果 共同作爲參數傳遞給func 進行計算,得到一個新結果;在取第四個元素和 這個新結果再進行func運算...直到取完所有元素爲止。


example:

from functools import reduce
num=[1,2,3,4,5]
v = reduce(lambda x,y:x+y,num)
a = reduce(lambda x,y:x+y,num,5)
print(v)
print(a)


總結:

map  //處理序列中的每一個元素,得到的結果是一個‘列表’,該‘列表’元素個數及位置與原來一樣

filter  //遍歷序列中的每一個元素,判斷每一個元素得到布爾值,如果是true則留下來

reduce  //處理一個序列,然後把序列進行合併操作


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章