python:lambda、filter、map、reduce
lambda 為關(guān)鍵字。filter,map,reduce為內(nèi)置函數(shù)。
lambda:實(shí)現(xiàn)python中單行最小函數(shù)。
g = lambda x: x * 2 #相當(dāng)于 def g(x):return x*2 print(g(3))# 6 注意:這里直接g(3)可以執(zhí)行,但沒(méi)有輸出的,前面的print不能少Map函數(shù)
map()函數(shù)接收兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是序列,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的list返回。?
舉例說(shuō)明 :
比如我們有一個(gè)函數(shù)f(x)=x2,要把這個(gè)函數(shù)作用在一個(gè)list [1, 2, 3, 4, 5, 6, 7, 8, 9]上,就可以用map()實(shí)現(xiàn)如下:?
?
現(xiàn)在,我們用Python代碼實(shí)現(xiàn):
>>> def f(x): ... return x * x ... >>> map(f, [1, 2, 3, 4, 5, 6, 7, 8, 9]) [1, 4, 9, 16, 25, 36, 49, 64, 81]Reduce函數(shù)?
reduce把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3…]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,其效果就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)比方說(shuō)對(duì)一個(gè)序列求和,就可以用reduce實(shí)現(xiàn):
>>> def add(x, y): ... return x + y ... >>> reduce(add, [1, 3, 5, 7, 9]) 25Filter函數(shù)?
Python內(nèi)建的filter()函數(shù)用于過(guò)濾序列。和map()類似,filter()也接收一個(gè)函數(shù)和一個(gè)序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。
True保留,False丟棄?
例如,在一個(gè)list中,刪掉偶數(shù),只保留奇數(shù),可以這么寫(xiě):
可見(jiàn)用filter()這個(gè)高階函數(shù),關(guān)鍵在于正確實(shí)現(xiàn)一個(gè)“篩選”函數(shù)。
轉(zhuǎn)載于:https://www.cnblogs.com/tianqizhi/p/9337881.html
總結(jié)
以上是生活随笔為你收集整理的python:lambda、filter、map、reduce的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: emuelec 和安卓 效率对比
- 下一篇: 光遇手游红绒斗篷怎么获得