深入分析Python中Lambda函數(shù)的用法
lambda函數(shù)是一種小的匿名函數(shù)。
lambda語法
lambda函數(shù):
lambda [arg1 [,arg2,...[,argn]]] : expression
- 輸入:可接受任意數(shù)量的參數(shù),如
lambda : print('hello')
,lambda x, y : x * y
- 輸出:expression計(jì)算得到的值;
- 函數(shù)體:只能是單行的,有一個(gè)表達(dá)式;
- 函數(shù)是匿名的(沒有函數(shù)名);
示例1:lambda函數(shù)與普通函數(shù)類似,可直接引用(讀取方式)外部變量
gAll = 10 if __name__ == '__main__': count = 2 result = map(lambda x: x * count + gAll, range(10)) print(list(result)) # [10, 12, 14, 16, 18, 20, 22, 24, 26, 28]
示例2:lambda函數(shù)調(diào)用(且表達(dá)式可為簡(jiǎn)單if語句)
result = [] for i in range(10): result.append((lambda x: x * 2 if x % 2 == 0 else x)(i)) print(result) # [0, 1, 4, 3, 8, 5, 12, 7, 16, 9]
示例3:lambda延遲計(jì)算引起的問題(若不使用參數(shù),所有打印都是9),為避免此問題,可把i以參數(shù)方式傳遞進(jìn)去(類似示例2),或直接把i作為參數(shù)賦值一下(類似生成同名局部變量):
result = [] for i in range(10): # result.append((lambda: print("lambda:", i))) # 全部是9 result.append((lambda i=i: print("lambda:", i))) for f in result: f()
高階函數(shù)
lambda函數(shù)可作為函數(shù)的返回值,以增強(qiáng)函數(shù)功能;以冪乘為例:
def powMulti(n): return lambda x: x**n if __name__ == '__main__': p = powMulti(2) for i in range(10): print(p(i))
內(nèi)置高階函數(shù)
lambda可方便應(yīng)用于:
map(fun, iterable, ...)
:影射;用fun依次操作集合中元素,并返回對(duì)應(yīng)結(jié)果的生成器;reduce(fun, iterable[, initializer])
:累積;用fun(兩個(gè)參數(shù))依次操作集元素(val = fun(val, ele)
;val初始值為initializer,若忽略則為集合中的第一個(gè)元素),返回最終結(jié)果;sorted(iterable[, cmp[, key[, reverse]]])
:排序;filter(fun, iterable)
:過濾;
src = [random.randint(0, 100) for _ in range(10)] print(src) dest = sorted(src) print(dest) ret = functools.reduce(lambda x, y: x + y, range(10), 10) print(ret) # 55
到此這篇關(guān)于深入分析Python中Lambda函數(shù)的用法的文章就介紹到這了,更多相關(guān)Python Lambda內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在PyCharm導(dǎo)航區(qū)中打開多個(gè)Project的關(guān)閉方法
今天小編就為大家分享一篇在PyCharm導(dǎo)航區(qū)中打開多個(gè)Project的關(guān)閉方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-01-01詳解Python匿名函數(shù)(lambda函數(shù))
這篇文章主要介紹了Python匿名函數(shù)(lambda函數(shù)),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04python中數(shù)組和矩陣乘法及使用總結(jié)(推薦)
這篇文章主要介紹了python中數(shù)組和矩陣乘法及使用總結(jié),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-05-05Python基于多線程實(shí)現(xiàn)ping掃描功能示例
這篇文章主要介紹了Python基于多線程實(shí)現(xiàn)ping掃描功能,結(jié)合實(shí)例形式分析了Python多線程與進(jìn)程相關(guān)模塊調(diào)用操作技巧,需要的朋友可以參考下2018-07-07Django media static外部訪問Django中的圖片設(shè)置教程
這篇文章主要介紹了Django media static外部訪問Django中的圖片設(shè)置教程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-04-04python 實(shí)現(xiàn)一個(gè)反向單位矩陣示例
今天小編就為大家分享一篇python 實(shí)現(xiàn)一個(gè)反向單位矩陣示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-11-11