日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747



函數(shù)式編程或者函數(shù)程序設(shè)計(jì),又稱泛函數(shù)編程,是一種編程范式。

在Python中,函數(shù)編程主要有以下4個(gè)函數(shù)的使用構(gòu)成:lambda()、map()、reduce()、filter(),下面我們來一一講解這些函數(shù)的作用與特點(diǎn)。

匿名函數(shù)lambda

Python用def來定義一個(gè)函數(shù),def后面跟函數(shù)名字,而匿名函數(shù),顧名思義,這個(gè)函數(shù)沒有名字,因?yàn)闆]有名字,不必?fù)?dān)心函數(shù)名沖突。

匿名函數(shù)語法:lambda 參數(shù)列表 : 表達(dá)式

Python4大函數(shù)式編程函數(shù),每一個(gè)都是經(jīng)典!

 

上圖中先將創(chuàng)建好的匿名函數(shù)通過一個(gè)變量來接收,然后在使用變量去調(diào)用匿名函數(shù),匿名函數(shù)lambda經(jīng)常與其它函數(shù)結(jié)合使用,以此來達(dá)到意想不到的效果,下面會(huì)涉及到這部分。

Map函數(shù)

Map()函數(shù)會(huì)根據(jù)提供的函數(shù)對(duì)指定的序列做映射。

語法:map(function, iterable, ……),第一個(gè)參數(shù)function為函數(shù),第二個(gè)參數(shù)iterable 為一個(gè)或者多個(gè)序列。

下圖中展示如果將列表list1中的內(nèi)容全部乘以2。

Python4大函數(shù)式編程函數(shù),每一個(gè)都是經(jīng)典!

 

首先定義一個(gè)翻倍函數(shù)doublex,接著利用map函數(shù)將翻倍函數(shù)作用于列表中的每一個(gè)元素!

由于map函數(shù)Python 3.x版本中返回迭代器,所以用一個(gè)list函數(shù)輸入內(nèi)容。

前面我們介紹過匿名函數(shù)lambda,這里map函數(shù)結(jié)合lambda函數(shù)將會(huì)超級(jí)簡(jiǎn)潔,上面那個(gè)功能,用lambda函數(shù),一行代碼即可搞定,如下圖所示:

Python4大函數(shù)式編程函數(shù),每一個(gè)都是經(jīng)典!

 

省去了定義函數(shù)那一步,是不是要方面簡(jiǎn)潔很多?

Reduce函數(shù)

reduce函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對(duì)集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。

語法:reduce(function, iterable[, initializer])

Reduce函數(shù)有點(diǎn)類似于map函數(shù),但map函數(shù)用于逐一遍歷,而reduce函數(shù)用于遞歸計(jì)算,如下例中所示:

Python4大函數(shù)式編程函數(shù),每一個(gè)都是經(jīng)典!

 

例1中先通過匿名函數(shù)創(chuàng)建一個(gè)兩數(shù)相加函數(shù),接著利用reduce函數(shù)這兩數(shù)相加函數(shù)作用在列表中,第一步先計(jì)算1+2=3,第二步3+3=6,第三步6+4=10,第四步10+5=15。

同理例2中,range(1,11)相當(dāng)于給出了一個(gè)列表[1,2,3,4,5,6,7,8,9,10],lambda構(gòu)造一個(gè)二元函數(shù),返回兩個(gè)參數(shù)的乘積。Reduce函數(shù)首先將列表的前兩個(gè)元素作為函數(shù)的參數(shù)進(jìn)行運(yùn)算,接著將運(yùn)算結(jié)果與第三個(gè)元素作為函數(shù)的參數(shù),然后再將運(yùn)算結(jié)果與第四個(gè)參數(shù)作為函數(shù)的參數(shù)……依次類推,直至列表元素結(jié)束,返回最終的結(jié)果。

需要注意的是,reduce函數(shù)在Python2.x版本中可直接使用,但是在3.x版本中,需要從functools導(dǎo)入才可以使用!

?filter函數(shù)

filter,過濾、篩選的意思,所以filter函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。

語法:filter(function, iterable)

下圖中例1用來篩選列表中大于5的元素,例2先定義了一個(gè)開平方為整數(shù)的函數(shù),然后在作用于100以內(nèi)的數(shù)字,如果平方根為整數(shù),則輸出。

同map函數(shù)一樣,filter函數(shù)Python 3.x版本中返回迭代器,所以用一個(gè)list函數(shù)輸入內(nèi)容。

Python4大函數(shù)式編程函數(shù),每一個(gè)都是經(jīng)典!

 

可以發(fā)現(xiàn),使用filter函數(shù)首先需要一個(gè)返回值為布爾型的函數(shù),如果為true,則在列表中挑出這個(gè)元素,最后將滿足條件的所有元素組合成一個(gè)列表返回。

 

小結(jié)

雖然很多時(shí)候以上四個(gè)函數(shù)的功能也可以用其它方式實(shí)現(xiàn),但是我們使用lambda、map、reduce、filter函數(shù)最終的目的是兼顧簡(jiǎn)潔與效率,因?yàn)檫@四個(gè)函數(shù)的循環(huán)速度要比Python內(nèi)置的for或while循環(huán)要快得多,相當(dāng)于C語言的速度。

分享到:
標(biāo)簽:函數(shù) 編程 Python
用戶無頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定