lambda函数是创建简单、一次性函数的快捷方式,语法为lambda参数:表达式,仅支持单表达式且不可含语句;常用于map、filter、sorted等高阶函数,适用于极简、临时场景,复杂逻辑应使用def函数。
Python中的lambda函数是创建简单、一次性函数的快捷方式,适合用在需要函数对象但又不想正式定义def函数的场景,比如配合map()、filter()、sorted()等高阶函数使用。
lambda函数由lambda关键字、参数列表、冒号和一个表达式组成,**不能包含语句(如print、return、循环或条件块),只能有一个返回表达式**。
lambda x: x * 2(接收x,返回x的2倍)lambda x: print(x); return x + 1(含语句和多表达式)lambda a, b: a ** b(计算a的b次方)lambda x, y=10: x + y
它最常用于简化数据处理逻辑,让代码更紧凑。
map()做
批量变换:list(map(lambda x: x.upper(), ['hello', 'world'])) → ['HELLO', 'WORLD']
filter()筛选数据:list(filter(lambda x: x % 2 == 0, [1, 2, 3, 4])) → [2, 4]
sorted()自定义排序:sorted([('Alice', 85), ('Bob', 92)], key=lambda x: x[1], reverse=True)(按分数降序)核心原则:只在函数逻辑**极简、临时、不复用**时使用。可读性和维护性优先于“一行写完”。
button.config(command=lambda: print("Clicked"))(GUI回调)def函数funcs = [lambda: i for i in range(3)],全部调用会输出2;修复方式是加默认参数lambda i=i: i
现代Python中,部分场景可用更清晰的写法替代lambda,提升可读性。
map+lambda:[x*2 for x in nums]比list(map(lambda x: x*2, nums))更直观operator模块替代简单lambda:from operator import itemgetter; sorted(data, key=itemgetter(1))