Python Lambda(匿名函数)详解
Lambda 函数,也称为匿名函数,是一种在 Python 中定义简洁函数的方式。与常规的 def 定义函数不同,lambda 是一个单行函数,常用于简短的、一次性的功能场景。
1. 基本语法
Lambda 函数的基本语法为:
lambda 参数1, 参数2, ... : 表达式
lambda是关键词。参数1, 参数2, ...是函数的输入参数,可以有多个参数。表达式是该函数的返回值,表达式的值将作为函数的输出。
Lambda 函数不需要显式的 return 语句,因为它会自动返回表达式的结果。
示例 1:最简单的 Lambda 函数
add = lambda x, y: x + y
print(add(3, 5)) # 输出 8
2. Lambda 函数的应用场景
2.1 用于函数式编程
Lambda 函数通常与 map()、filter()、reduce() 等函数配合使用,来对数据进行处理和转换。
示例 2:与 map() 配合使用
map() 函数接受一个函数和一个可迭代对象,返回一个将函数应用到每个元素后的新可迭代对象。
numbers = [1, 2, 3, 4]
squared = map(lambda x: x ** 2, numbers)
print(list(squared)) # 输出 [1, 4, 9, 16]
示例 3:与 filter() 配合使用
filter() 函数根据给定的函数和可迭代对象,返回一个过滤后的元素集合。
numbers = [1, 2, 3, 4, 5, 6]
even_numbers = filter(lambda x: x % 2 == 0, numbers)
print(list(even_numbers)) # 输出 [2, 4, 6]
示例 4:与 reduce() 配合使用
reduce() 函数将一个二元函数应用于序列的每一项,将结果汇总为一个值。它位于 functools 模块中。
from functools import reduce
numbers = [1, 2, 3, 4]
product = reduce(lambda x, y: x * y, numbers)
print(product) # 输出 24
3. Lambda 函数的优缺点
3.1 优点
- 简洁性:适用于简单的、短小的函数,避免了冗长的
def语法。 - 匿名性:可以直接创建函数对象,而不需要为其命名,适用于一次性使用的函数。
3.2 缺点
- 可读性差:由于 lambda 函数通常只有一行,功能较为简单,它们的可读性不如常规的函数。
- 功能限制:Lambda 函数只能包含一个表达式,无法包含多个语句或复杂的逻辑。
4. Lambda 函数与 def 定义的比较
4.1 使用 def 定义函数
def add(x, y):
return x + y
print(add(3, 5)) # 输出 8
4.2 使用 lambda 定义函数
add = lambda x, y: x + y
print(add(3, 5)) # 输出 8
- 两者的结果相同,但
lambda函数简洁、紧凑,适用于简单的功能场景。
5. 多个参数的 Lambda 函数
Lambda 函数可以接受多个参数,也可以应用于更复杂的计算。
示例 5:多个参数
multiply = lambda x, y, z: x * y * z
print(multiply(2, 3, 4)) # 输出 24
6. Lambda 函数与其他函数结合
6.1 在 sorted() 中使用 Lambda
在对列表排序时,可以使用 Lambda 函数作为排序的关键字函数。
pairs = [(1, 2), (3, 1), (5, 4)]
pairs.sort(key=lambda x: x[1]) # 按照元组的第二个元素排序
print(pairs) # 输出 [(3, 1), (1, 2), (5, 4)]
7. 总结
- Lambda 函数 允许我们定义一个匿名的、简单的函数。
- 它通常用于一次性操作或与高阶函数(如
map()、filter()和reduce())结合使用。 - Lambda 函数只能包含一个表达式,适合简洁的任务,但不适合复杂逻辑。
更多详细内容请关注其他相关文章!