8.6 匿名函数:lambda 表达式
Python Lambda表达式教程:从零开始学习匿名函数
本教程详细讲解Python中的lambda表达式,适合编程新手。涵盖lambda的基本概念、语法、常见用例和与def函数的对比,帮助您快速掌握匿名函数的使用。
推荐工具
Python Lambda表达式入门指南
什么是Lambda表达式?
Lambda表达式是Python中的匿名函数,用于创建小型、一次性函数,无需使用def关键字定义。它能让代码更简洁,尤其在函数式编程中非常有用。
为什么使用Lambda表达式?
- 简洁性:当您需要一个简单函数但不想定义完整函数时,lambda可以减少代码量。
- 功能性:常用于高阶函数,如
map()、filter()和sorted(),使代码更易读。
Lambda表达式语法
基本语法是:lambda arguments: expression
arguments:函数的参数列表,可以有一个或多个参数。expression:函数的返回值表达式,必须是单个表达式。
简单示例
# 定义一个lambda函数,用于计算平方
square = lambda x: x * x
print(square(5)) # 输出: 25
# 定义带多个参数的lambda函数
add = lambda a, b: a + b
print(add(3, 7)) # 输出: 10
Lambda表达式 vs def 函数
| 特性 | Lambda表达式 | def 函数 |
|---|---|---|
| 定义方式 | 匿名,单行表达式 | 使用def关键字,可以有多行 |
| 可读性 | 适用于简单操作 | 更清晰,适合复杂逻辑 |
| 存储 | 不能存储为函数对象,除非赋值 | 可以定义并重复使用 |
示例对比:
# 使用def定义函数
def multiply_def(x, y):
return x * y
print(multiply_def(4, 6)) # 输出: 24
# 使用lambda表达式
multiply_lambda = lambda x, y: x * y
print(multiply_lambda(4, 6)) # 输出: 24
常见用例
Lambda表达式在高阶函数中非常常见。
1. 在 map() 中使用
map() 函数对每个元素应用lambda函数。
# 使用lambda将列表中的每个数字加倍
numbers = [1, 2, 3, 4, 5]
doubled = list(map(lambda x: x * 2, numbers))
print(doubled) # 输出: [2, 4, 6, 8, 10]
2. 在 filter() 中使用
filter() 函数基于lambda返回True的元素。
# 使用lambda筛选出偶数
numbers = [1, 2, 3, 4, 5]
even = list(filter(lambda x: x % 2 == 0, numbers))
print(even) # 输出: [2, 4]
3. 在 sorted() 中使用
sorted() 函数可以使用lambda作为键函数。
# 使用lambda根据第二个元素排序列表
pairs = [(1, 3), (2, 1), (4, 2)]
sorted_pairs = sorted(pairs, key=lambda x: x[1])
print(sorted_pairs) # 输出: [(2, 1), (4, 2), (1, 3)]
注意事项和最佳实践
- 限制:lambda表达式只能包含一个表达式,不能有语句(如
if语句,但可以用条件表达式)。- 例如:
lambda x: 'even' if x % 2 == 0 else 'odd'
- 例如:
- 可读性:如果函数逻辑复杂,建议使用
def函数以提高代码可维护性。 - 命名:给lambda赋值可以使其可重用,但通常保留给简单场景。
总结
Lambda表达式是Python中编写简洁代码的强大工具,特别适合函数式编程。通过本教程,您应该能够理解lambda的基本用法,并在实际项目中应用。记住,适度使用lambda可以让代码更优雅,但过度使用可能影响可读性。
练习建议: 尝试在自己的项目中用lambda替换一些简单的def函数,以加深理解。
开发工具推荐