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

tech2026-01-31  5

lambda函数简介

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

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

# 数字字符串排序貌似还是以字符顺序而不是数字大小来排的, # 可能要先转化为数字(而re.findall('\((.*?)\)', x)返回的是字符串列表,要把它转换成数字列表) filenames.sort(key=lambda x: list(map(eval, re.findall('\((.*?)\)', x))))

示例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]
最新回复(0)