溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python里面有哪些內(nèi)置函數(shù)

發(fā)布時(shí)間:2021-11-03 16:34:00 來源:億速云 閱讀:140 作者:iii 欄目:編程語言

這篇文章主要介紹“Python里面有哪些內(nèi)置函數(shù)”,在日常操作中,相信很多人在Python里面有哪些內(nèi)置函數(shù)問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對(duì)大家解答”Python里面有哪些內(nèi)置函數(shù)”的疑惑有所幫助!接下來,請(qǐng)跟著小編一起來學(xué)習(xí)吧!

01 一用而過:lambda

很多語言都有匿名函數(shù),python的匿名函數(shù)寫作lambda,當(dāng)需要實(shí)現(xiàn)一定功能而又不想“大張旗鼓”的def一個(gè)函數(shù)時(shí),lambda就是最優(yōu)的選擇。

其語法格式一般是這樣的:

lambda x:x**2 # <function __main__.<lambda>(x)>

也可以將它賦值給一個(gè)變量,由于python中一切皆對(duì)象,所以后續(xù)程序中就可以用該變量調(diào)用這個(gè)匿名函數(shù)。

f = lambda x:x**2 f(2) # 4

當(dāng)然,這里其實(shí)沒必要應(yīng)用lambda來實(shí)現(xiàn),因?yàn)榧热灰@式調(diào)用,還不如干脆直接寫個(gè)明確的函數(shù)罷了。lambda函數(shù)更廣泛的應(yīng)用場(chǎng)景在于該匿名函數(shù)作為另一個(gè)函數(shù)的參數(shù)傳遞時(shí),應(yīng)用就比較合適了,例如,將lambda作為sort()函數(shù)的key參數(shù),就可以實(shí)現(xiàn)特定功能的排序。

dyct = {'a':2, 'b':1, 'c':5} sorted(dyct.items(), key = lambda x:x[1]) # [('b', 1), ('a', 2), ('c', 5)]

02 智能解壓:zip

zip函數(shù)人如其名,是打包或者解包的函數(shù),接受2個(gè)以上可迭代變量,輸出對(duì)應(yīng)位置組成元組后的迭代類型。例如:

a = ['a', 'b', 'c'] b = (4, 5, 6) zip(a,b) # <zip at 0x1da016d15c8> list(zip(a,b)) # [('a', 4), ('b', 5), ('c', 6)] tuple(zip(a,b)) # (('a', 4), ('b', 5), ('c', 6))

也可以接受多于2個(gè)輸入可迭代變量,而且如果各迭代變量長度不一致也不會(huì)報(bào)錯(cuò),只是此時(shí)返回迭代變量取決于輸入總長度最短的一個(gè)。例如:

a = ['a', 'b', 'c', 'd', 'e'] b = (4, 5, 6, 7) c = [True, False, True] list(zip(a,b,c)) # (('a', 4, True), ('b', 5, False), ('c', 6, True))

與zip打包相對(duì)應(yīng)的用法是解包,即對(duì)一個(gè)打包形式的元素進(jìn)行依次解包,并返回多個(gè)新的列表。例如:

aZip = (('a', 4, True), ('b', 5, False), ('c', 6, True)) a, b, c = zip(*aZip) # a:('a', 'b', 'c') # b:(4, 5, 6) # c:(True, False, True)

03 一一映射:map

map函數(shù)也正如其取名一樣,是一個(gè)將接受的迭代變量依次經(jīng)過某種映射,并輸出映射后的迭代變量。例如,如果對(duì)列表中的某個(gè)變量依次完成求值,并返回一個(gè)新的列表,則可以應(yīng)用map:

a = [1, 2, 3, 4] map(str, a) # <map at 0x1da017136d8> list(map(str, a)) # ['1', '2', '3', '4']

這是map函數(shù)的一個(gè)典型用法:接受2個(gè)參數(shù),第一個(gè)參數(shù)(上例中是str()函數(shù))是一個(gè)要作用的函數(shù),第二個(gè)參數(shù)是可迭代變量。

當(dāng)?shù)谝粋€(gè)函數(shù)的參數(shù)是是一個(gè)多變量函數(shù)時(shí),map也可以接受更多的參數(shù)。例如:

a = [1, 2, 3, 4] b = [2, 2, 3, 3] list(map(lambda x, y:x**y, a, b)) # [1, 4, 27, 64]

與zip函數(shù)中類似,當(dāng)map里的函數(shù)參數(shù)長度不匹配時(shí)并不會(huì)報(bào)錯(cuò),只是輸出結(jié)果將由最短的決定:

a = [1, 2, 3, 4] b = [2, 2] list(map(lambda x, y:x**y, a, b)) # [1, 4]

04 一夫當(dāng)關(guān):filter

與map函數(shù)類似,filter函數(shù)也接受一個(gè)函數(shù)及其變量作為參數(shù),只是要求這個(gè)函數(shù)的返回結(jié)果是bool型,并用這個(gè)bool的結(jié)果決定輸出的取舍問題。例如需要對(duì)一個(gè)輸入列表過濾,要求保留3的倍數(shù):

a = range(10) filter(lambda x:x%3==0, a) # <filter at 0x1da0171c0f0> list(filter(lambda x:x%3==0, a)) # [0, 3, 6, 9]

這里需注意,當(dāng)filter的第一個(gè)函數(shù)返回值不是bool型時(shí)不會(huì)報(bào)錯(cuò),只是它會(huì)轉(zhuǎn)化為bool型判斷,如果判斷結(jié)果不是False(python中會(huì)判為False的變量包括0、None、[]等等),則會(huì)將其輸出,否則過濾掉:

a = range(10) list(filter(lambda x:x%3, a)) # [1, 2, 4, 5, 7, 8]

05 萬劍歸宗:reduce

map和filter函數(shù)都是多入多出型,實(shí)質(zhì)上是完成了特定的變換或篩選。reduce則是歸約函數(shù),將一系列輸入變量經(jīng)過特定的函數(shù)后轉(zhuǎn)化為一個(gè)結(jié)果輸出。不過可能是由于應(yīng)用場(chǎng)景有限的原因,reduce在python3中已不再是全局調(diào)用函數(shù),必須要從functools包中導(dǎo)入方可使用:

from functools import reduce a = range(5) reduce(lambda x, y: x+y, a) # 10

reduce函數(shù)還可以接受一個(gè)可選的初始值作為參數(shù)。應(yīng)用reduce函數(shù)可以實(shí)現(xiàn)很多小trick,就看能不能想的到用的出:

from functools import reduce s = 'abcdefg' reduce(lambda x, y: y+x, s, 'AA') # 'gfedcbaAA'

到此,關(guān)于“Python里面有哪些內(nèi)置函數(shù)”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)砀鄬?shí)用的文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI