新聞中心
Python中自帶了幾個比較有意思的函數(shù),一般在面試或者筆試基礎(chǔ)的時候會問到,其中3個就是map、filter、reduce函數(shù)。

創(chuàng)新互聯(lián)是一家專業(yè)提供青浦企業(yè)網(wǎng)站建設(shè),專注與成都做網(wǎng)站、網(wǎng)站制作、H5響應(yīng)式網(wǎng)站、小程序制作等業(yè)務(wù)。10年已為青浦眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站建設(shè)公司優(yōu)惠進行中。
1.map(function, iterable)
它第一個要傳的元素是函數(shù)名或lambda匿名函數(shù)表達式,第二個元素傳入可迭代對象。
array = [1,2,3,4,5]result = map(lambda x:x+1,array)result#這里result直接打印的結(jié)果是一個對象,需要用list轉(zhuǎn)化一下才 可以看到具體結(jié)果
這里我們可以看到,map函數(shù)結(jié)果里的每一個元素都比原列表對應(yīng)的元素大1,而我縮寫的lambda表達式就是將每個元素加1。
由此可以看出map()函數(shù)的作用就是將可迭代對象里的每個元素進行函數(shù)操作,然后將元素操作后所組成的可迭代對象返回。
2.filter(function, iterable)
同樣,第一個參數(shù)傳入函數(shù)名或匿名函數(shù),第二個元素傳入可迭代對象
#先按map的函數(shù)傳入試一下array = [1,2,3,4,5]result = filter(lambda x:x+1,array)resultlist(result) #結(jié)果沒有變化,說明對參數(shù)沒有進行操作返回[1, 2, 3, 4, 5] #將函數(shù)進行True、False判斷返回試一下result1 = filter(lambda x:x if x%2==0 else None,array)result1 list(result1) #返回了為True的值[2, 4]
由上面的代碼可以得出,filter()函數(shù)是將可迭代對象的元素代入函數(shù),然后返回為True的元素,一般做篩選的時候可以用到,不用再寫循環(huán)。
3.reduce(function, iterable)
reduce函數(shù)只有在python2中才有,傳入?yún)?shù)和map、filter是一樣的。但它的函數(shù)傳入的是兩個元素,將前兩個元素代入函數(shù)后返回操作后的值,將返回的值再作為第一個元素,同時將第三個元素作為第二個元素再次代入函數(shù)進行運算,直到結(jié)束返回最后結(jié)果。
array = [1,2,3,4,5] result = reduce(lambda x,y:x+y,array) list(result) #1+2+3+4+5=1515
它的操作步驟其實很簡單:
第一次x=1,y=2傳入匿名函數(shù),x+y是返回的值3
第二次x=3(返回的那個3),y=3(此3為列表中第二個元素)代入函數(shù),返回x+y為6
第三次x=6,y=4,返回x+y為10
第四次x=10,y=5,返回x+y為15
后邊沒有元素可傳入直接結(jié)束。
溫馨提示:python工具里自帶的函數(shù)不一定是最快的算法,只是為了方便使用,編寫代碼快速、簡潔,如果追求速度的話還是要自己手?jǐn)]最優(yōu)算法。(所以面試才有那么多算法和數(shù)據(jù)結(jié)構(gòu)的題目)
當(dāng)前標(biāo)題:創(chuàng)新互聯(lián)Python教程:Python中幾個必須知道的函數(shù)
分享地址:http://www.5511xx.com/article/coepsec.html


咨詢
建站咨詢
