在 Python 中,lambda 表达式用于创建匿名函数。与传统的函数定义(使用 def 关键字)不同,lambda 允许你在一行代码中定义一个简短的函数。这些函数可以在需要函数对象的地方使用,比如 map、filter 和 sorted 等函数。
基本语法
lambda arguments: expression
- arguments:函数的参数
- expression:函数的返回值(表达式必须是单一的,不可以有多个语句)
示例
- 简单的 lambda 表达式:
add = lambda x, y: x + y
print(add(5, 3)) # 输出: 8
- 在 map 函数中使用 lambda:
map 函数用于对可迭代对象的每个元素应用一个函数。
numbers = [1, 2, 3, 4, 5]
squared = list(map(lambda x: x**2, numbers))
print(squared) # 输出: [1, 4, 9, 16, 25]
- 在 filter 函数中使用 lambda:
filter 函数用于过滤可迭代对象中的元素,根据给定的函数判断是否保留。
numbers = [1, 2, 3, 4, 5]
even_numbers = list(filter(lambda x: x % 2 == 0, numbers))
print(even_numbers) # 输出: [2, 4]
- 在 sorted 函数中使用 lambda:
sorted 函数用于排序,lambda 可以作为排序的关键字函数。
tuples = [(1, 'one'), (3, 'three'), (2, 'two')]
sorted_tuples = sorted(tuples, key=lambda x: x[1])
print(sorted_tuples) # 输出: [(1, 'one'), (2, 'two'), (3, 'three')]
- 用于排序的自定义排序:
words = ['banana', 'apple', 'cherry']
sorted_words = sorted(words, key=lambda word: len(word))
print(sorted_words) # 输出: ['apple', 'banana', 'cherry']
注意事项
- lambda 表达式不能包含多行代码、条件语句或复杂的逻辑,只适用于简单的表达式。
- 尽量避免过度使用 lambda 表达式,尤其是当函数逻辑较复杂时,使用常规函数定义(def)会更易于阅读和维护。