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 //處理一個序列,然後把序列進行合併操作