摘要:最近在看英文版,看到了講解等函數(shù),覺(jué)得講解的思路特別好。所以,我加上了自己的理解,寫(xiě)了本篇文章。
最近在看《Think Python》(英文版),看到了講解map, reduce, filter等函數(shù),覺(jué)得講解的思路特別好。所以,我加上了自己的理解,寫(xiě)了本篇文章。
引子如果要對(duì)列表中的數(shù)字求和,我們可以這樣做:
def add_all(t): """t is a list of nums""" total = 0 for x in t: total += x return total
運(yùn)行結(jié)果:
由于python中求和操作太常見(jiàn)了,所以python提供了內(nèi)置函數(shù)sum來(lái)進(jìn)行這項(xiàng)操作
sum將上一版代碼修改如下:
if __name__ == "__main__": t = [1, 2, 3, 4] print sum(t)
運(yùn)行結(jié)果:
像這種從一個(gè)列表中得出一個(gè)結(jié)果的操作,也叫reduce,除了求和這一種reduce操作外,python還支持自定義的方式
reduce比如,我不是想對(duì)隊(duì)列求和,而是想得到列表各數(shù)字的乘積,可以利用reduce這樣實(shí)現(xiàn):
def multiple_all(x, y): return x * y if __name__ == "__main__": t = [1, 2, 3, 4] print reduce(multiple_all, t)
運(yùn)行結(jié)果:
上面介紹了將一個(gè)從一個(gè)列表得到一個(gè)結(jié)果的情形,還有一種情形是:按照某個(gè)規(guī)律對(duì)列表中的元素一一轉(zhuǎn)換,這就要用到map內(nèi)置函數(shù)了
map如果給定一個(gè)列表(元素為字符串),要把列表元素首字母大寫(xiě),可以這樣做
if __name__ == "__main__": t = ["hello", "world", "yarving"] print map(lambda x: x.capitalize(), t)
運(yùn)行結(jié)果:
還有一種情況,是要將列表里的元素過(guò)濾出去,可以用到filter函數(shù)
filter給定一個(gè)列表(元素為數(shù)字),如果要僅保留不大于4的數(shù)字,可以這樣做:
if __name__ == "__main__": t = [1, 2, 3, 4, 5, 6, 7] print filter(lambda x: x <= 4, t)
運(yùn)行結(jié)果:
如想要獲取《Think Python》(英文書(shū))的PDF版本,可發(fā)送郵件到 yarving@qq.com ,并標(biāo)明主題 "Think Python"
本文作者: Yarving Liu
本文鏈接: http://yarving.historytale.co...
版權(quán)聲明: 本博客所有文章除特別聲明外,均采用 CC BY-NC-SA 4.0 許可協(xié)議。轉(zhuǎn)載請(qǐng)注明出處!
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://m.specialneedsforspecialkids.com/yun/41901.html
摘要:用匿名函數(shù)有個(gè)好處,因?yàn)楹瘮?shù)沒(méi)有名字,不必?fù)?dān)心函數(shù)名沖突。和不同的是,把傳入的函數(shù)依次作用于每個(gè)元素,然后根據(jù)返回值是還是決定保留還是丟棄該元素。字符串給出當(dāng)前平臺(tái)使用的行終止符。程序中間的退出,為正常退出。 列表生成式 函數(shù)的參數(shù)類(lèi)型 lambda函數(shù) map, reduce, filter, sorted函數(shù) eval, exec, join, zip函數(shù) itertools中的...
摘要:的函數(shù)使得函數(shù)能直接以的每個(gè)元素作為參數(shù)傳遞到中并返回響應(yīng)的新的如下求的平方在需要對(duì)中的每個(gè)元素做轉(zhuǎn)換的時(shí)候會(huì)很方便比如把中的每個(gè)轉(zhuǎn)換成當(dāng)然第二個(gè)參數(shù)是也可以是或者是類(lèi)結(jié)構(gòu)的是不行的不過(guò)返回的結(jié)果都是這里順便說(shuō)一下的結(jié)構(gòu)是用表示的如是直觀的 map map(funcname, list) python的map 函數(shù)使得函數(shù)能直接以list的每個(gè)元素作為參數(shù)傳遞到funcname中...
摘要:上一講和本講的標(biāo)題是大話題小函數(shù),所謂大話題,就是這些函數(shù)如果溯源,都會(huì)找到聽(tīng)起來(lái)更高大上的東西。是提出的一個(gè)軟件架構(gòu),用于大規(guī)模數(shù)據(jù)集大于的并行運(yùn)算。 上一講和本講的標(biāo)題是大話題小函數(shù),所謂大話題,就是這些函數(shù)如果溯源,都會(huì)找到聽(tīng)起來(lái)更高大上的東西。這種思維方式絕對(duì)我堅(jiān)定地繼承了中華民族的優(yōu)良傳統(tǒng)的。自從天朝的臣民看到英國(guó)人開(kāi)始踢足球,一直到現(xiàn)在所謂某國(guó)勃起了,都一直在試圖論證足球起...
摘要:好啦,首先讓我們先搞明白基礎(chǔ)定義,到底是什么表達(dá)了中用于創(chuàng)建匿名函數(shù)的特殊語(yǔ)法。其實(shí)總結(jié)起來(lái),可以理解為一個(gè)小的匿名函數(shù),函數(shù)可以使用任意數(shù)量的參數(shù),但只能有一個(gè)表達(dá)式。 lambda是什么 大家好,今天給大家?guī)?lái)的是有關(guān)于Python里面的lambda表達(dá)式詳細(xì)解析。lambda在Python里面的用處很廣,但說(shuō)實(shí)話,我個(gè)人認(rèn)為有關(guān)于lambda的討論不是如何使用的問(wèn)題,而是該不該用...
摘要:另外,這些中的每一個(gè)都是純函數(shù),有返回值。例如,如果要計(jì)算整數(shù)列表的累積乘,或者求和等等基礎(chǔ)語(yǔ)法參數(shù)是連續(xù)作用于每一個(gè)元素的方法,新的參數(shù)為上一次執(zhí)行的結(jié)果,為被過(guò)濾的可迭代序列返回值最終的返回結(jié)果在中,是一個(gè)內(nèi)置函數(shù)。 簡(jiǎn)潔的內(nèi)置函數(shù) 大家好,我又回來(lái)了,今天我想和大家分享的是Python非常重要的幾個(gè)內(nèi)置函數(shù):map,filter,reduce, zip。它們都是處理序列的便捷函數(shù)...
閱讀 2612·2021-11-15 11:38
閱讀 2626·2021-11-04 16:13
閱讀 18061·2021-09-22 15:07
閱讀 1025·2019-08-30 15:55
閱讀 3270·2019-08-30 14:15
閱讀 1672·2019-08-29 13:59
閱讀 3226·2019-08-28 18:28
閱讀 1582·2019-08-23 18:29