深入分析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計算得到的值;
- 函數(shù)體:只能是單行的,有一個表達式;
- 函數(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)用(且表達式可為簡單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延遲計算引起的問題(若不使用參數(shù),所有打印都是9),為避免此問題,可把i以參數(shù)方式傳遞進去(類似示例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ù)的返回值,以增強函數(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依次操作集合中元素,并返回對應(yīng)結(jié)果的生成器;reduce(fun, iterable[, initializer]):累積;用fun(兩個參數(shù))依次操作集元素(val = fun(val, ele);val初始值為initializer,若忽略則為集合中的第一個元素),返回最終結(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)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例
今天小編就為大家分享一篇Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07
解決AttributeError:'NoneTypeobject'?has?no?attrib
這篇文章主要介紹了解決AttributeError:?‘NoneType‘?object?has?no?attribute?‘Window‘的問題(親測有效),本文給大家介紹的非常想詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
Python基于Tkinter實現(xiàn)的垃圾分類答題軟件代碼
這篇文章主要介紹了基于Tkinter實現(xiàn)的垃圾分類答題軟件代碼,圖形用戶界面是一種人與計算機通信的界面顯示格式,允許用戶使用鼠標等輸入設(shè)備操縱屏幕上的圖標或菜單選項,需要的朋友可以參考下2023-04-04
python opencv實現(xiàn)目標區(qū)域裁剪功能
這篇文章主要介紹了python opencv實現(xiàn)目標區(qū)域裁剪功能,通過截取到坐標信息以后用CV2的裁剪就可以完美實現(xiàn),本文給大家分享實例代碼,需要的朋友可以參考下2021-07-07
為什么入門大數(shù)據(jù)選擇Python而不是Java?
為什么入門大數(shù)據(jù)選擇Python而不是Java?這篇文章就來談?wù)剬W習大數(shù)據(jù)入門語言的選擇,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-03-03

