Python內(nèi)置map、reduce、filter、sorted函數(shù)。
成都創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注重慶網(wǎng)站建設(shè)公司、網(wǎng)站設(shè)計(jì),有關(guān)企業(yè)網(wǎng)站建設(shè)方案、改版、費(fèi)用等問題,行業(yè)涉及紗窗等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。map函數(shù)接受兩個(gè)參數(shù),一個(gè)是函數(shù),一個(gè)是Iterable(迭代對(duì)象),map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的Iterator
返回。
有一個(gè)函數(shù) f(x)=x2
,要把這個(gè)函數(shù)作用到一個(gè)list [1,2,3,4]
上,用map實(shí)現(xiàn):
map傳入第一個(gè)參數(shù)是 f 也就是f函數(shù)本身,結(jié)果 k 是一個(gè)Iterator,Iterator是惰性序列,通過 list()
函數(shù)讓他把整個(gè)序列計(jì)算出來并返回一個(gè)list。
上述計(jì)算也可以寫一個(gè)循環(huán)計(jì)算出來:
用循環(huán)寫出來不簡潔,用 map 函數(shù)一眼就可以看出來。
map函數(shù)還可以計(jì)算任意負(fù)載函數(shù),比如,把這個(gè)list所有字符串轉(zhuǎn)為數(shù)字:
只需要一行代碼。
reduce用法是把一個(gè)函數(shù)作用在一個(gè)序列[1,2,3,4,5]上,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce 把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算,效果如下:
對(duì)一個(gè)序列求積:
把序列[1, 3, 5, 7, 9]變換成整數(shù)13579:
結(jié)合map、reduce函數(shù),把字符串'123.456'
轉(zhuǎn)換成浮點(diǎn)數(shù)123.456:
和map()類似,filter()也接收一個(gè)函數(shù)和一個(gè)序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素。
一個(gè)list中,刪掉奇數(shù),只保留偶數(shù):
(lambda是匿名函數(shù))
filter()函數(shù)返回的是一個(gè)Iterator,也就是一個(gè)惰性序列,所以要強(qiáng)迫filter()完成計(jì)算結(jié)果,需要用list()函數(shù)獲得所有結(jié)果并返回list。
sorted()函數(shù)就可以對(duì)list進(jìn)行排序:
sorted()函數(shù)是一個(gè)高階函數(shù),它還可以接收一個(gè)key函數(shù)來實(shí)現(xiàn)自定義的排序,例如按絕對(duì)值大小排序:
key指定的函數(shù)將作用于list的每一個(gè)元素上,并根據(jù)key函數(shù)返回的結(jié)果進(jìn)行排序。對(duì)比原始的list和經(jīng)過key=abs處理過的list:
然后sorted()函數(shù)按照keys進(jìn)行排序,并按照對(duì)應(yīng)關(guān)系返回list相應(yīng)的元素:
字符串排序的例子:
默認(rèn)情況下,對(duì)字符串排序,是按照ASCII的大小比較的,由于'Z' < 'a',結(jié)果,大寫字母Z會(huì)排在小寫字母a的前面。
排序應(yīng)該忽略大小寫,按照字母序排序。要實(shí)現(xiàn)這個(gè)算法,不必對(duì)現(xiàn)有代碼大加改動(dòng),只要我們能用一個(gè)key函數(shù)把字符串映射為忽略大小寫排序即可。忽略大小寫來比較兩個(gè)字符串,實(shí)際上就是先把字符串都變成大寫(或者都變成小寫),再比較。
給sorted傳入key函數(shù),即可實(shí)現(xiàn)忽略大小寫的排序:
進(jìn)行反向排序,不必改動(dòng)key函數(shù),可以傳入第三個(gè)參數(shù)reverse=True:
用sorted()排序的關(guān)鍵在于實(shí)現(xiàn)一個(gè)映射函數(shù)。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。
當(dāng)前名稱:Python-map、reduce、filter、sorted函數(shù)-創(chuàng)新互聯(lián)
本文鏈接:http://jinyejixie.com/article14/egige.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、品牌網(wǎng)站設(shè)計(jì)、服務(wù)器托管、外貿(mào)建站、App開發(fā)、域名注冊(cè)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容