#python入門6#函數(shù)式編程

map/reduce:
  • map():函數(shù)接收兩個(gè)參數(shù)月匣,一個(gè)是函數(shù)承边,一個(gè)是Iterable掖蛤,map將傳入的函數(shù)依次作用到序列的每個(gè)元素,并把結(jié)果作為新的Iterator返回刁标。
  • reduce:把一個(gè)函數(shù)作用在一個(gè)序列[x1, x2, x3, ...]上颠通,這個(gè)函數(shù)必須接收兩個(gè)參數(shù),reduce把結(jié)果繼續(xù)和序列的下一個(gè)元素做累積計(jì)算

list(map(str, [1, 2, 3, 4, 5, 6, 7, 8, 9]))
['1', '2', '3', '4', '5', '6', '7', '8', '9']

#序列求和
>>> from functools import reduce
>>> def add(x, y):
...    return x + y
...
>>> reduce(add, [1, 3, 5, 7, 9])
25

序列求和key再簡化:(使用 lambda)

>>> from functool import reduce
>>> reduce(lambda x,y:x+y, [1,3,5,7,9])
25
filter():
  • filter():filter()也接收一個(gè)函數(shù)和一個(gè)序列膀懈。和map()不同的是蒜哀,filter()把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是True還是False決定保留還是丟棄該元素
  def is_odd(n):
        return n%2 == 1

  list(filter(is_odd, [1,2,3,4,5,6,7,8,9,10]))
[1, 3, 5, 7, 9] 

filter()函數(shù)返回的是一個(gè)Iterator吏砂,也就是一個(gè)惰性序列,所以要強(qiáng)迫filter()完成計(jì)算結(jié)果乘客,需要用list()函數(shù)獲得所有結(jié)果并返回list

sorted():
  • sorted():可以對(duì)list進(jìn)行排序,同時(shí)也是一個(gè)高階函數(shù)狐血,它還可以接收一個(gè)key函數(shù)來實(shí)現(xiàn)自定義的排序
#簡單用法:
>>> sorted([36,5,-12,-5,9])
[-12, -5, 5, 9, 36]
#高階使用:
>>> sorted([36, 5, -12, 9, -21], key=abs)
[5, 9, -12, -21, 36]
#key指定的函數(shù)將作用于list的每一個(gè)元素上,并根據(jù)key函數(shù)返回的結(jié)果進(jìn)行排序易核。對(duì)比原始的list和經(jīng)過key=abs匈织, 處理過的list:
list = [36, 5, -12, 9, -21]
keys = [36, 5, 12, 9, 21]
#然后sorted()函數(shù)按照keys進(jìn)行排序,并按照對(duì)應(yīng)關(guān)系返回list相應(yīng)的元素:
keys排序結(jié)果 => [5, 9, 12, 21, 36]
                              |   |    |      |     |
最終結(jié)果         => [5, 9, -12, -21, 36]
#忽略大小寫牡直,給字母排序:
>>> sorted(['bob', 'about', 'Zoo', 'Credit'], key=str.lower)
['about', 'bob', 'Credit', 'Zoo']
學(xué)習(xí)來源于廖雪峰教程
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末缀匕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碰逸,更是在濱河造成了極大的恐慌乡小,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,723評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饵史,死亡現(xiàn)場(chǎng)離奇詭異满钟,居然都是意外死亡胜榔,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,485評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門湃番,熙熙樓的掌柜王于貴愁眉苦臉地迎上來夭织,“玉大人,你說我怎么就攤上這事吠撮∽鸲瑁” “怎么了?”我有些...
    開封第一講書人閱讀 152,998評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵泥兰,是天一觀的道長弄屡。 經(jīng)常有香客問我,道長逾条,這世上最難降的妖魔是什么琢岩? 我笑而不...
    開封第一講書人閱讀 55,323評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮师脂,結(jié)果婚禮上担孔,老公的妹妹穿的比我還像新娘。我一直安慰自己吃警,他們只是感情好糕篇,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,355評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著酌心,像睡著了一般拌消。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上安券,一...
    開封第一講書人閱讀 49,079評(píng)論 1 285
  • 那天墩崩,我揣著相機(jī)與錄音,去河邊找鬼侯勉。 笑死鹦筹,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的址貌。 我是一名探鬼主播铐拐,決...
    沈念sama閱讀 38,389評(píng)論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼练对!你這毒婦竟也來了遍蟋?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,019評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤螟凭,失蹤者是張志新(化名)和其女友劉穎虚青,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體螺男,經(jīng)...
    沈念sama閱讀 43,519評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡挟憔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,971評(píng)論 2 325
  • 正文 我和宋清朗相戀三年钟些,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片绊谭。...
    茶點(diǎn)故事閱讀 38,100評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡政恍,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出达传,到底是詐尸還是另有隱情篙耗,我是刑警寧澤,帶...
    沈念sama閱讀 33,738評(píng)論 4 324
  • 正文 年R本政府宣布宪赶,位于F島的核電站宗弯,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏搂妻。R本人自食惡果不足惜蒙保,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,293評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望欲主。 院中可真熱鬧邓厕,春花似錦、人聲如沸扁瓢。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,289評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽引几。三九已至昧互,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間伟桅,已是汗流浹背敞掘。 一陣腳步聲響...
    開封第一講書人閱讀 31,517評(píng)論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留楣铁,地道東北人玖雁。 一個(gè)月前我還...
    沈念sama閱讀 45,547評(píng)論 2 354
  • 正文 我出身青樓,卻偏偏與公主長得像民褂,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子疯潭,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,834評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容