64 lambda 表达式
创始人
2024-11-04 05:37:59

lambda 表达式常用来声明匿名函数,即没有函数名字的临时使用的小函数,常用在临时需要一个类似于函数的功能但又不想定义函数的场合。

lambda 表达式只可以包含一个表达式,不允许包含其他复杂的语句,但在表达式中可以调用其他函数,该表达式的计算结果相当于函数的返回值。

f = lambda x, y, z: x + y + z  # 可以给 lambda 表达式起一个名字 print(f(1, 2, 3))  # 把 lambda 表达式当作函数使用  g = lambda x, y=2, z=3: x + y + z  # 支持默认值参数 print(g(1)) print(g(2, z=4, y=5))  # 调用时使用关键参数  L = [(lambda x: x ** 2), (lambda x: x ** 3), (lambda x: x ** 4)] print(L[0](2), L[1](2), L[2](2))  D = {'i': (lambda: 2 + 3), 'j': (lambda: 2 * 3), 'k': (lambda: 2 ** 3)} print(D['i'](), D['j'](), D['k']())  s = [1, 2, 3, 4, 5] print(list(map(lambda i: i + 10, s)))  # lambda 表达式作为函数参数 

在这里插入图片描述

def func(i):     return i * i   func(5) s = [1, 2, 3, 4, 5] print(list(map(lambda i: func(i), s)))  # lambda表达式中可以调用函数 

在这里插入图片描述

data = list(range(20)) import random  random.shuffle(data) print(data) data.sort(key=lambda x: x)  # 用在列表的sort方法中,作为函数参数 print(data) data.sort(key=lambda x: len(str(x)))  # 使用 lambda 表达式指定排序规则 print(data) data.sort(key=lambda x: len(str(x)), reverse=True)  # 使用 lambda 表达式指定排序规则 print(data) 

在这里插入图片描述

在使用 lambda 表达式时,要注意变量作用域可能带来的问题。

s = [] for i in range(10):     s.append(lambda j=i: j ** 2) print(s[0](), s[1](), s[-2](), s[-1]()) 

在这里插入图片描述

在这里插入图片描述

# 相当于只有一条 return i 语句的小函数 f = lambda: i i = 3  # 调用时真正的返回值取决于全局变量i的值 print(f())  i = 5 print(f()) 

在这里插入图片描述

虽然使用 lambda 表达式可以很方便灵活地定义一些小函数,但是,如果仅仅是需要一个简单的运算,那么应该尽量使用标准库 operator 中提供的函数,避免自己定义 lambda 表达式,operator 中的函数执行效率更高一些。

相关内容

热门资讯

裸辞做“一人公司”,我后悔了 去年这个时候,一位以色列程序员正在东南亚旅行。他顺手把一个在脑子里转了很久的想法做成了产品,一个让任...
南京建成国内首个Pre-6G试... 4月21日,2026全球6G技术与产业生态大会在南京开幕。全息互动技术展台前,一名远在北京的工作人员...
超梵求职受邀参加“2025抖音... 超梵求职受邀参加“2025抖音巨量引擎成人教育行业生态大会”,探讨分享优质内容传播,服务万千学员。 ...
摩托罗拉Razr 2026(R... IT之家 4 月 22 日消息,摩托罗拉宣布新一代 Razr 折叠手机将于 4 月 29 日在美国发...
库克卸任,特纳斯领航:苹果新纪... 苹果首席执行官蒂姆·库克将卸任,硬件工程主管约翰·特纳斯将接任,苹果公司今天宣布此事。 库克将在夏季...