深入分析Python中Lambda函数的用法
作者:alwaysrun 时间:2023-07-01 16:03:21
lambda函数是一种小的匿名函数。
lambda语法
lambda函数:
lambda [arg1 [,arg2,...[,argn]]] : expression
输入:可接受任意数量的参数,如
lambda : print('hello')
,lambda x, y : x * y
输出:expression计算得到的值;
函数体:只能是单行的,有一个表达式;
函数是匿名的(没有函数名);
示例1:lambda函数与普通函数类似,可直接引用(读取方式)外部变量
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函数调用(且表达式可为简单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延迟计算引起的问题(若不使用参数,所有打印都是9),为避免此问题,可把i以参数方式传递进去(类似示例2),或直接把i作为参数赋值一下(类似生成同名局部变量):
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()
高阶函数
lambda函数可作为函数的返回值,以增强函数功能;以幂乘为例:
def powMulti(n):
return lambda x: x**n
if __name__ == '__main__':
p = powMulti(2)
for i in range(10):
print(p(i))
内置高阶函数
lambda可方便应用于:
map(fun, iterable, ...)
:影射;用fun依次操作集合中元素,并返回对应结果的生成器;reduce(fun, iterable[, initializer])
:累积;用fun(两个参数)依次操作集元素(val = fun(val, ele)
;val初始值为initializer,若忽略则为集合中的第一个元素),返回最终结果;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
来源:https://blog.csdn.net/alwaysrun/article/details/127192904
标签:Python,Lambda,表达式
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
SQL存储过程介绍
2008-02-13 18:52:00
Python数值方法及数据可视化
2021-07-26 17:32:51
![](https://img.aspxhome.com/file/2023/9/66789_0s.png)
django admin组件使用方法详解
2021-05-28 19:59:53
JavaScript实现全选取消效果
2023-08-27 16:26:42
![](https://img.aspxhome.com/file/2023/7/56157_0s.png)
python基于turtle绘制几何图形
2023-06-22 22:44:43
![](https://img.aspxhome.com/file/2023/7/135237_0s.png)
Node.js(安装,启动,测试)
2024-05-13 09:29:28
![](https://img.aspxhome.com/file/2023/9/125729_0s.png)
Python实现PS滤镜特效之扇形变换效果示例
2021-05-08 17:58:03
![](https://img.aspxhome.com/file/2023/4/128504_0s.jpg)
python PaddleSpeech实现婴儿啼哭识别
2023-08-22 22:25:31
一篇文章读懂Golang init函数执行顺序
2024-04-27 15:40:37
![](https://img.aspxhome.com/file/2023/7/133957_0s.jpg)
微信小程序 数据缓存实现方法详解
2024-04-19 09:49:22
在python中使用[[v]*n]*n遇到的坑及解决
2022-02-03 10:31:35
![](https://img.aspxhome.com/file/2023/5/89315_0s.png)
python爬虫如何解决图片验证码
2021-04-27 11:58:57
js实现的捐赠管理完整实例
2023-08-22 05:25:14
部署.Net6项目到docker
2024-06-05 15:43:46
![](https://img.aspxhome.com/file/2023/5/122835_0s.jpg)
python实现复制文件到指定目录
2022-09-25 20:53:12
用Dreamweaver实现Real与网页结合
2010-07-13 12:11:00
![](https://img.aspxhome.com/file/UploadPic/20072/200723113228359s.gif)
Pytorch如何切换 cpu和gpu的使用详解
2023-08-22 03:30:11
zabbix进行数据库备份以及表分区的方法
2024-01-16 13:01:46
python实现单目标、多目标、多尺度、自定义特征的KCF跟踪算法(实例代码)
2022-03-31 11:23:43
mybatis统计每条SQL的执行时间的方法示例
2024-01-28 12:54:43