python lambda表达式的使用方法(匿名函数)

lambda函数简介

lambda表达式,被称为匿名函数,如:lambda x, y : x+y,冒号前的x、y是所需参数,冒号后的x+y是所要运行的表达式,返回值就是计算后的结果,如:(lambda x, y : x+y)(1, 2),结果为3。

示例1:将存有文件名的字符串列表,运用正则表达式方法提取文件名中的数字,按照数字大小将文件名字符串列表重新排序

参见:如何将yolo的标注(annotations).txt 坐标转换成tensorflow-yolov3(YunYang1994)的.txt 标注坐标?

# (3)用lambda配合正则表达式(将filenames中对象一一取出赋给x,通过冒号后的表达式运算后将结果返回给key)
# 数字字符串排序貌似还是以字符顺序而不是数字大小来排的,
# 可能要先转化为数字(而re.findall('\((.*?)\)', x)返回的是字符串列表,要把它转换成数字列表)
filenames.sort(key=lambda x: list(map(eval, re.findall('\((.*?)\)', x))))

lambda表达式的使用方法

示例2:将存有hsv颜色空间的颜色元组列表,转换成rgb颜色空间的颜色元组列表
import colorsys
hsv_tuples=[(0.0, 1.0, 1.0),(0.5,0.5,0.5)]
print(list(map(lambda x:colorsys.hsv_to_rgb(*x),hsv_tuples)))	
结果:
[(1.0, 0.0, 0.0), (0.25, 0.5, 0.5)]
参数前带个*表示元组,
里是因为colorsys.hsv_to_rgb函数所需传入对象必须是元组,map函数则要求hsv_tuples为可迭代对象
示例3:将存有两个数字的元组列表,运用lambda表达式分别计算输出其中两个数字的和
tuples=[(1,2),(3,4)]
print(list(map(lambda x:((lambda a,b:a+b)(*x)),tuples)))
结果:
[3, 7]
这里使用了两次嵌套的lambda表达式,其中借鉴了lambda表达式的用法之一:
add = lambda x, y : x+y
add(1,2)  # 结果为3

当然,用下面这种方法也是可以的:

tuples=[(1,2),(3,4)]
print(list(map(lambda x:x[0]+x[1],tuples)))		# [3, 7]

参考文章:python – lambda表达式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dontla

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值