網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
lambda函數(shù)是一種小的匿名函數(shù)。
lambda語(yǔ)法
lambda函數(shù):
lambda [arg1 [,arg2,...[,argn]]] : expression
- 輸入:可接受任意數(shù)量的參數(shù),如
lambda : print('hello')
,lambda x, y : x * y
- 輸出:expression計(jì)算得到的值;
- 函數(shù)體:只能是單行的,有一個(gè)表達(dá)式;
- 函數(shù)是匿名的(沒(méi)有函數(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語(yǔ)句)
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ì)算引起的問(wèn)題(若不使用參數(shù),所有打印都是9),為避免此問(wèn)題,可把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)
:過(guò)濾;
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
原文鏈接:https://blog.csdn.net/alwaysrun/article/details/127192904
相關(guān)推薦
- 2022-05-23 iOS實(shí)現(xiàn)無(wú)限滑動(dòng)效果_IOS
- 2022-06-09 ASP.NET?Core使用EF創(chuàng)建模型(必需和可選屬性、最大長(zhǎng)度、并發(fā)標(biāo)記、陰影屬性)_實(shí)用技巧
- 2022-10-23 python?groupby函數(shù)實(shí)現(xiàn)分組選取最大值與最小值_python
- 2022-04-12 【debug】TypeError: mel() takes 0 positional argumen
- 2022-11-27 Python+decimal完成精度計(jì)算的示例詳解_python
- 2023-07-09 前端axios請(qǐng)求,傳遞數(shù)組的時(shí)候會(huì)在url的后邊加中括號(hào)[]
- 2022-05-22 部署ASP.NET?Core程序到Windows系統(tǒng)_基礎(chǔ)應(yīng)用
- 2022-03-21 C語(yǔ)言版約瑟夫問(wèn)題算法實(shí)現(xiàn)_C 語(yǔ)言
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支