溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python-map、reduce、filter、sorted函數(shù)

發(fā)布時間:2020-07-08 22:08:55 來源:網絡 閱讀:507 作者:lyl無狀態(tài) 欄目:編程語言

map、reduce、filter、sorted函數(shù)

Python內置map、reduce、filter、sorted函數(shù)。

map函數(shù)

map函數(shù)接受兩個參數(shù),一個是函數(shù),一個是Iterable(迭代對象),map將傳入的函數(shù)依次作用到序列的每個元素,并把結果作為新的Iterator返回

有一個函數(shù) f(x)=x2,要把這個函數(shù)作用到一個list [1,2,3,4]上,用map實現(xiàn):

Python-map、reduce、filter、sorted函數(shù)

map傳入第一個參數(shù)是 f 也就是f函數(shù)本身,結果 k 是一個Iterator,Iterator是惰性序列,通過 list() 函數(shù)讓他把整個序列計算出來并返回一個list。

上述計算也可以寫一個循環(huán)計算出來:

Python-map、reduce、filter、sorted函數(shù)

用循環(huán)寫出來不簡潔,用 map 函數(shù)一眼就可以看出來。

map函數(shù)還可以計算任意負載函數(shù),比如,把這個list所有字符串轉為數(shù)字:

Python-map、reduce、filter、sorted函數(shù)

只需要一行代碼。

reduce函數(shù)

reduce用法是把一個函數(shù)作用在一個序列[1,2,3,4,5]上,這個函數(shù)必須接收兩個參數(shù),reduce 把結果繼續(xù)和序列的下一個元素做累積計算,效果如下:

Python-map、reduce、filter、sorted函數(shù)

對一個序列求積:

Python-map、reduce、filter、sorted函數(shù)

把序列[1, 3, 5, 7, 9]變換成整數(shù)13579:

Python-map、reduce、filter、sorted函數(shù)

結合map、reduce函數(shù),把字符串'123.456'轉換成浮點數(shù)123.456:

Python-map、reduce、filter、sorted函數(shù)

filter()函數(shù)

和map()類似,filter()也接收一個函數(shù)和一個序列。和map()不同的是,filter()把傳入的函數(shù)依次作用于每個元素,然后根據返回值是True還是False決定保留還是丟棄該元素。

一個list中,刪掉奇數(shù),只保留偶數(shù):

Python-map、reduce、filter、sorted函數(shù)

(lambda是匿名函數(shù))

filter()函數(shù)返回的是一個Iterator,也就是一個惰性序列,所以要強迫filter()完成計算結果,需要用list()函數(shù)獲得所有結果并返回list。

sorted()函數(shù)

sorted()函數(shù)就可以對list進行排序:

Python-map、reduce、filter、sorted函數(shù)

sorted()函數(shù)是一個高階函數(shù),它還可以接收一個key函數(shù)來實現(xiàn)自定義的排序,例如按絕對值大小排序:

Python-map、reduce、filter、sorted函數(shù)

key指定的函數(shù)將作用于list的每一個元素上,并根據key函數(shù)返回的結果進行排序。對比原始的list和經過key=abs處理過的list:

Python-map、reduce、filter、sorted函數(shù)

然后sorted()函數(shù)按照keys進行排序,并按照對應關系返回list相應的元素:

Python-map、reduce、filter、sorted函數(shù)

字符串排序的例子:

Python-map、reduce、filter、sorted函數(shù)

默認情況下,對字符串排序,是按照ASCII的大小比較的,由于'Z' < 'a',結果,大寫字母Z會排在小寫字母a的前面。

排序應該忽略大小寫,按照字母序排序。要實現(xiàn)這個算法,不必對現(xiàn)有代碼大加改動,只要我們能用一個key函數(shù)把字符串映射為忽略大小寫排序即可。忽略大小寫來比較兩個字符串,實際上就是先把字符串都變成大寫(或者都變成小寫),再比較。

給sorted傳入key函數(shù),即可實現(xiàn)忽略大小寫的排序:

Python-map、reduce、filter、sorted函數(shù)

進行反向排序,不必改動key函數(shù),可以傳入第三個參數(shù)reverse=True:

Python-map、reduce、filter、sorted函數(shù)

用sorted()排序的關鍵在于實現(xiàn)一個映射函數(shù)。

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI