在 Python 中,lambda是一种由表达式组成的匿名函数。它语法简洁、灵活高效,常用于函数作为参数传递的场景,尤其在处理简洁逻辑或与高阶函数结合时非常实用。
一、lambda 的定义与语法
lambda 函数是一种没有函数名的函数,通常用于临时、一次性使用的场景。
1、语法结构
lambda 参数1, 参数2, ... : 表达式(1)lambda 是关键字,表示定义一个匿名函数。
(2)冒号左侧是参数列表,可以有多个参数。如果不想接受任何参数,可以写成 lambda: 表达式。
(3)冒号右侧必须是单个表达式,不能写语句块。表达式的结果会被自动返回。
(4)整个 lambda 表达式本质上就是一个函数对象,可以赋值给变量或作为参数传递。
2、基础用法
(1)与定义普通函数对比
# 使用 lambda 定义平方函数
square = lambda x: x * x #绑定到名称 square
print(square(3)) # 输出 9
# 等价的 def 写法
def square(x):
return x * x将 lambda 表达式绑定到名称后,就可将其作为函数来调用。
(2)可以有一个或多个参数
# 多参数加法
add = lambda x, y: x + y
print(add(3, 5)) # 输出: 8(3)冒号的右侧只能是单个表达式,不能包含赋值语句、循环或语句块。
# 在 lambda 中使用条件表达式
max_func = lambda a, b: a if a > b else b
print(max_func(3, 7)) # 7# 错误示例:lambda 中不能有赋值语句(= 是语句,不是表达式)
lambda x: x = x + 1 # SyntaxError二、lambda 与高阶函数
在 Python 中,高阶函数(Higher-Order Function)是指至少满足以下两点之一的函数:
接受一个或多个函数作为参数。
返回一个函数作为结果。
由于整个 lambda 表达式本质上是一个函数对象,因此它可以自然地作为高阶函数的参数或返回值。
示例:
# 作为参数
def apply_twice(func, x):
return func(func(x))
print(apply_twice(lambda x: x + 1, 3)) # 5
# 作为返回值(闭包)
def make_adder(n):
return lambda x: x + n
add5 = make_adder(5)
print(add5(3)) # 8Python 的一些内置高阶函数与 lambda 搭配使用非常常见:
# map:批量映射转换
nums = [1, 2, 3]
print(list(map(lambda x: x**2, nums))) # [1, 4, 9]
# sorted:按长度排序
words = ['apple', 'pear', 'banana', 'kiwi']
print(sorted(words, key=lambda x: len(x)))
# ['kiwi', 'pear', 'apple', 'banana']
# filter:筛选偶数
nums = [1, 2, 3, 4, 5, 6]
print(list(filter(lambda x: x % 2 == 0, nums)))
# [2, 4, 6]
# reduce:连续归约
from functools import reduce
print(reduce(lambda x, y: x * y, [1, 2, 3, 4]))
# 24详情请参阅:
小结
lambda 让代码更紧凑,特别适合临时性、小逻辑的函数传递。
推导式优先,内置函数优先,复杂逻辑用 def,lambda 保持小而美。
“点赞有美意,赞赏是鼓励”
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.