您好,登錄后才能下訂單哦!
這篇文章主要介紹“Python里面有哪些內置函數”,在日常操作中,相信很多人在Python里面有哪些內置函數問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”Python里面有哪些內置函數”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
01 一用而過:lambda
很多語言都有匿名函數,python的匿名函數寫作lambda,當需要實現一定功能而又不想“大張旗鼓”的def一個函數時,lambda就是最優的選擇。
其語法格式一般是這樣的:
lambda x:x**2 # <function __main__.<lambda>(x)>
也可以將它賦值給一個變量,由于python中一切皆對象,所以后續程序中就可以用該變量調用這個匿名函數。
f = lambda x:x**2 f(2) # 4
當然,這里其實沒必要應用lambda來實現,因為既然要顯式調用,還不如干脆直接寫個明確的函數罷了。lambda函數更廣泛的應用場景在于該匿名函數作為另一個函數的參數傳遞時,應用就比較合適了,例如,將lambda作為sort()函數的key參數,就可以實現特定功能的排序。
dyct = {'a':2, 'b':1, 'c':5} sorted(dyct.items(), key = lambda x:x[1]) # [('b', 1), ('a', 2), ('c', 5)]
02 智能解壓:zip
zip函數人如其名,是打包或者解包的函數,接受2個以上可迭代變量,輸出對應位置組成元組后的迭代類型。例如:
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個輸入可迭代變量,而且如果各迭代變量長度不一致也不會報錯,只是此時返回迭代變量取決于輸入總長度最短的一個。例如:
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打包相對應的用法是解包,即對一個打包形式的元素進行依次解包,并返回多個新的列表。例如:
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函數也正如其取名一樣,是一個將接受的迭代變量依次經過某種映射,并輸出映射后的迭代變量。例如,如果對列表中的某個變量依次完成求值,并返回一個新的列表,則可以應用map:
a = [1, 2, 3, 4] map(str, a) # <map at 0x1da017136d8> list(map(str, a)) # ['1', '2', '3', '4']
這是map函數的一個典型用法:接受2個參數,第一個參數(上例中是str()函數)是一個要作用的函數,第二個參數是可迭代變量。
當第一個函數的參數是是一個多變量函數時,map也可以接受更多的參數。例如:
a = [1, 2, 3, 4] b = [2, 2, 3, 3] list(map(lambda x, y:x**y, a, b)) # [1, 4, 27, 64]
與zip函數中類似,當map里的函數參數長度不匹配時并不會報錯,只是輸出結果將由最短的決定:
a = [1, 2, 3, 4] b = [2, 2] list(map(lambda x, y:x**y, a, b)) # [1, 4]
04 一夫當關:filter
與map函數類似,filter函數也接受一個函數及其變量作為參數,只是要求這個函數的返回結果是bool型,并用這個bool的結果決定輸出的取舍問題。例如需要對一個輸入列表過濾,要求保留3的倍數:
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]
這里需注意,當filter的第一個函數返回值不是bool型時不會報錯,只是它會轉化為bool型判斷,如果判斷結果不是False(python中會判為False的變量包括0、None、[]等等),則會將其輸出,否則過濾掉:
a = range(10) list(filter(lambda x:x%3, a)) # [1, 2, 4, 5, 7, 8]
05 萬劍歸宗:reduce
map和filter函數都是多入多出型,實質上是完成了特定的變換或篩選。reduce則是歸約函數,將一系列輸入變量經過特定的函數后轉化為一個結果輸出。不過可能是由于應用場景有限的原因,reduce在python3中已不再是全局調用函數,必須要從functools包中導入方可使用:
from functools import reduce a = range(5) reduce(lambda x, y: x+y, a) # 10
reduce函數還可以接受一個可選的初始值作為參數。應用reduce函數可以實現很多小trick,就看能不能想的到用的出:
from functools import reduce s = 'abcdefg' reduce(lambda x, y: y+x, s, 'AA') # 'gfedcbaAA'
到此,關于“Python里面有哪些內置函數”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。