>>N=range(10)>>>printfilter(lambdax:x>5,N)[" />

日韩久久久精品,亚洲精品久久久久久久久久久,亚洲欧美一区二区三区国产精品 ,一区二区福利

Python內(nèi)置函數(shù)之filter map reduce介紹

系統(tǒng) 1773 0

Python內(nèi)置了一些非常有趣、有用的函數(shù),如:filter、map、reduce,都是對(duì)一個(gè)集合進(jìn)行處理,filter很容易理解用于過濾,map用于映射,reduce用于歸并. 是Python列表方法的三架馬車。


1. filter函數(shù) 的功能相當(dāng)于過濾器。調(diào)用一個(gè)布爾函數(shù)bool_func來迭代遍歷每個(gè)seq中的元素;返回一個(gè)使bool_seq返回值為true的元素的序列。

          
>>> N=range(10)
>>> print filter(lambda x:x>5,N)
[6, 7, 8, 9]
        

2. map函數(shù) func作用于給定序列的每個(gè)元素,并用一個(gè)列表來提供返回值。

          
>>> N1=[1,2,3]
>>> N2=[6,5,4]
>>> map(lambda x,y:x+y,N1,N2)
[7, 7, 7]
>>> map(lambda x:x+3,N1)
[4, 5, 6]
        

3. reduce函數(shù) ,func為二元函數(shù),將func作用于seq序列的元素,每次攜帶一對(duì)(先前的結(jié)果以及下一個(gè)序列的元素),連續(xù)的將現(xiàn)有的結(jié)果和下一個(gè)值作用在獲得的隨后的結(jié)果上,最后減少我們的序列為一個(gè)單一的返回值。

          
>>> N=range(1,101)
>>> reduce(lambda x,y:x+y,N)
5050
        

例1:用map和reduce實(shí)現(xiàn)5的階乘相加(5!+4!+3!+2!+1!)

          
>>>print reduce(lambda x,y:x*y,range(1,6))
>>>print reduce(lambda x,y:x*y,range(1,5))
>>>print reduce(lambda x,y:x*y,range(1,4))
>>>print reduce(lambda x,y:x*y,range(1,3))
>>>print reduce(lambda x,y:x*y,range(1,2))
'''
        

結(jié)果為

          
120
24
6
2
1
'''
        

#把上一步的結(jié)果變成一個(gè)階乘列表

          
>>>print map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6))
[1, 2, 6, 24, 120]
        

#最后把階乘列表相加,第一題解決

          
>>>print reduce(lambda m,n:m+n,map(lambda a:reduce(lambda x,y:x*y,range(1,a+1)),range(1,6)))
153
        

例2:用filter將100~200以內(nèi)的質(zhì)數(shù)過濾出來
質(zhì)數(shù)又稱素?cái)?shù)。指在一個(gè)大于1的自然數(shù)中,除了1和此整數(shù)自身外,不能被其他自然數(shù)整除的數(shù)

          
>>>filter(lambda N:len(filter(lambda M:N%M==0,range(2,int(N**0.5)+1)))==0,range(100,201))
        

更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長非常感激您!手機(jī)微信長按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫作最大的動(dòng)力,如果您喜歡我的文章,感覺我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會(huì)非常 感謝您的哦!??!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 绥棱县| 葫芦岛市| 元朗区| 松潘县| 民丰县| 宝坻区| 娱乐| 黔东| 湘乡市| 塘沽区| 聂拉木县| 沾化县| 阿合奇县| 颍上县| 修文县| 务川| 邵武市| 抚州市| 阳西县| 米林县| 固安县| 杭州市| 嘉兴市| 富锦市| 呼玛县| 汾西县| 手机| 龙胜| 蓝田县| 金堂县| 信丰县| 宣化县| 海淀区| 大姚县| 南漳县| 乌鲁木齐市| 邹平县| 萨迦县| 濉溪县| 乌兰县| 绥棱县|