Python 中的 lambda 函数是一种简洁的定义匿名函数的方式。lambda 函数可以接受任意数量的参数,但只能有一个表达式。这个表达式的计算结果就是函数的返回值。由于 lambda 函数本质上是一个表达式,它可以出现在 Python 语法允许表达式出现的任何地方。
基本语法
lambda 参数列表: 表达式
参数列表:与普通的函数定义类似,但不需要括号包围。
表达式:这个表达式的结果会被返回。
示例
1. 简单的 lambda 函数
square = lambda x: x * x print(square(4)) # 输出: 16
这里定义了一个名为 square 的 lambda 函数,它接受一个参数 x 并返回 x 的平方。
2. 使用 lambda 函数作为参数
lambda 函数经常作为参数传递给高阶函数(接受函数作为参数或返回一个函数的函数)。例如,在 filter() 函数中使用 lambda 来过滤列表:
numbers = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] filtered_numbers = filter(lambda x: x % 2 == 0, numbers) print(list(filtered_numbers)) # 输出: [2, 4, 6, 8, 10]
这里,lambda 函数用于选择列表中的偶数。
3. 在 map() 函数中使用 lambda
map() 函数对列表中的每个元素应用一个函数,并返回一个新的列表(在 Python 3 中,map() 返回的是一个迭代器,所以需要用 list() 转换)。
numbers = [1, 2, 3, 4, 5] squared = map(lambda x: x * x, numbers) print(list(squared)) # 输出: [1, 4, 9, 16, 25]
4. 在 sorted() 函数中使用 lambda
sorted() 函数可以对列表进行排序,使用 lambda 函数可以自定义排序规则。
pairs = [(1, 'one'), (3, 'three'), (2, 'two'), (4, 'four')] pairs.sort(key=lambda pair: pair[1]) print(pairs) # 输出: [(1, 'one'), (2, 'two'), (3, 'three'), (4, 'four')]
这里,lambda 函数用于根据元组的第二个元素进行排序。
注意事项
lambda 函数主要用于定义简单的、一次性的函数对象。
对于复杂的函数,应该使用标准的 def 语句来定义。
lambda 函数可以有多个参数,但只能有一个表达式。
lambda 函数在需要函数对象的地方非常有用,比如作为参数传递给高阶函数。