簡(jiǎn)單了解Python中的幾種函數(shù)
幾個(gè)特殊的函數(shù)(待補(bǔ)充)
python是支持多種范型的語言,可以進(jìn)行所謂函數(shù)式編程,其突出體現(xiàn)在有這么幾個(gè)函數(shù): filter、map、reduce、lambda、yield
lambda
>>> g = lambda x,y:x+y #x+y,并返回結(jié)果 >>> g(3,4) 7 >>> (lambda x:x**2)(4) #返回4的平方 16
lambda函數(shù)的使用方法:
在lambda后面直接跟變量
變量后面是冒號(hào)
冒號(hào)后面是表達(dá)式,表達(dá)式計(jì)算結(jié)果就是本函數(shù)的返回值
冒號(hào)后面是表達(dá)式,表達(dá)式計(jì)算結(jié)果就是本函數(shù)的返回值
比如,要打印一個(gè)list,里面依次是某個(gè)數(shù)字的1次方,二次方,三次方,四次方。用lambda可以這樣做:
>>> lamb = [ lambda x:x,lambda x:x**2,lambda x:x**3,lambda x:x**4 ] >>> for i in lamb: ... print i(3), ... 3 9 27 81
map
map()是python的一個(gè)內(nèi)置函數(shù),它的基本樣式是:
map(func,seq)
func是一個(gè)函數(shù),seq是一個(gè)序列對(duì)象。在執(zhí)行的時(shí)候,序列對(duì)象中的每個(gè)元素,按照從左到右的順序,依次被取出來,并放入
到func那個(gè)函數(shù)里面,并將func的返回值依次存到一個(gè)list中。如
>>> items = [1,2,3,4,5] >>> squared = [] >>> for i in items: ... squared.append(i**2) ... >>> squared [1, 4, 9, 16, 25] >>> def sqr(x): return x**2 ... >>> map(sqr,items) [1, 4, 9, 16, 25] >>> map(lambda x: x**2, items) [1, 4, 9, 16, 25] >>> [ x**2 for x in items ] #這個(gè)我最喜歡了,一般情況下速度足夠快,而且可讀性強(qiáng) [1, 4, 9, 16, 25]
要點(diǎn):
對(duì)iterable中的每個(gè)元素,依次應(yīng)用function的方法(本質(zhì)上就是一個(gè)for循環(huán))
將所有結(jié)果返回一個(gè)list
如果參數(shù)很多,則對(duì)那些參數(shù)并行執(zhí)行function
繼續(xù)下面兩個(gè)例子:
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> map(lambda x,y: x+y, lst1,lst2) #將兩個(gè)列表中的對(duì)應(yīng)項(xiàng)加起來,并返回一個(gè)結(jié)果列表 [7, 9, 11, 13, 5]
>>> lst1 = [1,2,3,4,5] >>> lst2 = [6,7,8,9,0] >>> lst3 = [7,8,9,2,1] >>> map(lambda x,y,z: x+y+z, lst1,lst2,lst3) [14, 17, 20, 15, 6]
可以看到map函數(shù)的強(qiáng)大和簡(jiǎn)潔。如果使用for循環(huán)將會(huì)很繁瑣
reduce
直接看例子:
>>> reduce(lambda x,y: x+y,[1,2,3,4,5]) 15
reduce函數(shù)的計(jì)算方式是將列表中的元素累加,((((1+2)+3)+4)+5)=15 與map函數(shù)相比較就可以看出兩者之間的區(qū)別。map是上下運(yùn)算,reduce是橫著逐個(gè)元素進(jìn)行運(yùn)算。
reduce含可以接受第三個(gè)值作為初始值:例如
>>> reduce(lambda x,y: x+y,[1,2,3,4,5],100) 115
上述列表中計(jì)算將以100為初始值執(zhí)行累加計(jì)算,先計(jì)算 100+1
filter
filter的中文含義是“過濾器”,在python中,它就是起到了過濾器的作用.
通過下面代碼體會(huì):
>>> numbers = range(-5,5) >>> numbers [-5, -4, -3, -2, -1, 0, 1, 2, 3, 4] >>> filter(lambda x: x>0, numbers) [1, 2, 3, 4] >>> [x for x in numbers if x>0] #與上面那句等效 [1, 2, 3, 4] >>> filter(lambda x: x > 3, [1,2,3,4,5]) [4,5]
拜讀下filter的官方文檔解釋:
filter(...) filter(function or None, sequence) -> list, tuple, or string Return those items of sequence for which function(item) is true. If function is None, return the items that are true. If sequence is a tuple or string, return the same type, else return a list.
總結(jié)
以上就是本文關(guān)于簡(jiǎn)單了解Python中的幾種函數(shù)的全部?jī)?nèi)容,希望對(duì)大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:Python算法輸出1-9數(shù)組形成的結(jié)果為100的所有運(yùn)算式、Python生成數(shù)字圖片代碼分享等,有什么問題可以隨時(shí)留言,小編會(huì)及時(shí)回復(fù)大家的。
相關(guān)文章
Python map及filter函數(shù)使用方法解析
這篇文章主要介紹了Python map及filter函數(shù)使用方法解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-08-08
Python編程中Python與GIL互斥鎖關(guān)系作用分析
GIL互斥鎖用來保護(hù)Python世界里的對(duì)象,防止同一時(shí)刻多個(gè)線程執(zhí)行Python字節(jié)碼,確保線程安全,但也導(dǎo)致Python線程無法利用多核CPU優(yōu)勢(shì),本文來探討Python將來是否有可能去除GIL2021-09-09
利用Python爬蟲爬取金融期貨數(shù)據(jù)的案例分析
從技術(shù)角度來看,經(jīng)過一步步解析,任務(wù)是簡(jiǎn)單的,入門requests爬蟲及入門pandas數(shù)據(jù)分析就可以完成,本文重點(diǎn)給大家介紹Python爬蟲爬取金融期貨數(shù)據(jù)的案例分析,感興趣的朋友一起看看吧2022-06-06
Python?異步如何使用等待有時(shí)間限制協(xié)程
這篇文章主要為大家介紹了Python?異步如何使用等待有時(shí)間限制協(xié)程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
在jupyter notebook 添加 conda 環(huán)境的操作詳解
這篇文章主要介紹了在jupyter notebook 添加 conda 環(huán)境的操作詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04
Python進(jìn)階之利用+和*進(jìn)行列表拼接
在我們學(xué)習(xí)python的過程中,有一個(gè)非常常見的語法,那就是利用+和*進(jìn)行序列的拼接以及其他操作。今天就帶大家從使用+和*進(jìn)行拼接出發(fā)認(rèn)識(shí)一個(gè)大家非常容易犯的代碼錯(cuò)誤。話不多說我們開始吧2023-04-04

