Python中常用的高階函數(shù)實(shí)例詳解
前言
高階函數(shù)指的是能接收函數(shù)作為參數(shù)的函數(shù)或類;python中有一些內(nèi)置的高階函數(shù),在某些場(chǎng)合使用可以提高代碼的效率.
lambda
當(dāng)在使用一些函數(shù)的時(shí)候,我們不需要顯式定義函數(shù)名稱,直接傳入lambda匿名函數(shù)即可。lambda匿名函數(shù)通常和其他函數(shù)搭配使用。
比如可以直接使用如下的lambda表達(dá)式計(jì)算當(dāng)x=3時(shí),y = x * 3 + 5的函數(shù)值。
In [1]: (lambda x: x * 3 + 5)(3) Out[1]: 14
map
map函數(shù)將一個(gè)函數(shù)和序列/迭代器(可以傳入多個(gè))作為參數(shù),應(yīng)用函數(shù)到序列中的每個(gè)元素,返回一個(gè)迭代器。
In [4]: a = list(range(5)) In [5]: b = list(range(2, 7)) # 結(jié)合lambda匿名函數(shù),對(duì)a列表中的每個(gè)元素,計(jì)算x * 3 + 5的函數(shù)值 In [6]: list(map(lambda x: x * 3 + 5, a)) Out[6]: [5, 8, 11, 14, 17] In [9]: def add(x, y): ...: return x+y # 傳入多個(gè)序列,a、b兩個(gè)序列中的對(duì)應(yīng)元素依次傳入函數(shù)add中進(jìn)行計(jì)算 # Note: a、b兩個(gè)序列的長(zhǎng)度可以不相等 In [10]: list(map(add, a, b)) Out[10]: [2, 4, 6, 8, 10]
filter
filter函數(shù)(filter(func, seq))借助一個(gè)函數(shù)來測(cè)試序列/迭代器中每個(gè)元素的真假,返回一個(gè)過濾后的迭代器。
In [18]: a = list(range(5)) In [19]: def isodd(number): ...: if number % 2 == 0: ...: return False ...: return True ...: In [20]: filter(isodd, a) Out[20]: <filter at 0x1a6dc460748> # 過濾掉所有偶數(shù) In [21]: list(filter(isodd, a)) Out[21]: [1, 3]
reduce
reduce函數(shù)傳入一個(gè)函數(shù)和序列/迭代器,它將滾動(dòng)計(jì)算序列中元素,返回單個(gè)結(jié)果。例如要計(jì)算一個(gè)列表所有元素的和。
In [23]: from functools import reduce In [24]: a = list(range(5)) In [25]: sum = reduce((lambda x, y: x + y), a) In [26]: sum Out[26]: 10
sorted
sorted(iter, key, reverse=False), 高級(jí)排序函數(shù),可以根據(jù)key實(shí)現(xiàn)自定義排序。reverse=False表示默認(rèn)排序結(jié)果升序。
# 比如按照a中每個(gè)字符串最后的數(shù)字大小,降序排序 In [30]: a Out[30]: ['fasad_2', 'fadfc_4', '7hdc_0', 'ncsl_1', 'fai_3'] In [32]: sorted(a, key=lambda x: int(x[x.rindex('_') + 1:]), reverse=True) Out[32]: ['fadfc_4', 'fai_3', 'fasad_2', 'ncsl_1', '7hdc_0']
總結(jié)
以上所述是小編給大家介紹的Python中常用的高階函數(shù)實(shí)例詳解,希望對(duì)大家有所幫助,也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
Python selenium爬取微博數(shù)據(jù)代碼實(shí)例
這篇文章主要介紹了Python selenium爬取微博數(shù)據(jù)代碼實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-05-05Python實(shí)現(xiàn)的批量修改文件后綴名操作示例
這篇文章主要介紹了Python實(shí)現(xiàn)的批量修改文件后綴名操作,涉及Python目錄文件的遍歷、重命名等相關(guān)操作技巧,需要的朋友可以參考下2018-12-12學(xué)習(xí)python之編寫簡(jiǎn)單乘法口訣表實(shí)現(xiàn)代碼
這篇文章主要介紹了學(xué)習(xí)python之編寫簡(jiǎn)單乘法口訣表實(shí)現(xiàn)代碼,需要的朋友可以參考下2016-02-02Python Numpy運(yùn)行報(bào)錯(cuò)IndexError與形狀不匹配的問題解決辦法
在使用Numpy進(jìn)行數(shù)據(jù)處理和科學(xué)計(jì)算時(shí),IndexError和形狀不匹配(Shape Mismatch)是常見的錯(cuò)誤類型,這些錯(cuò)誤通常發(fā)生在數(shù)組索引操作、數(shù)組運(yùn)算或數(shù)組重塑時(shí),本文將通過一個(gè)具體的例子來詳細(xì)分析這些錯(cuò)誤的原因和解決辦法,需要的朋友可以參考下2024-07-07使用memory_profiler監(jiān)測(cè)python代碼運(yùn)行時(shí)內(nèi)存消耗方法
今天小編就為大家分享一篇使用memory_profiler監(jiān)測(cè)python代碼運(yùn)行時(shí)內(nèi)存消耗方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2018-12-12python中tf.boolean_mask()函數(shù)的使用方法詳解
這篇文章主要介紹了python中tf.boolean_mask()函數(shù)的使用方法詳解,?tf.boolean_mask()?函數(shù)的作用是通過布爾值對(duì)指定的列的元素進(jìn)行過濾,需要的朋友可以參考下2023-11-11