Python lambda 函数
- Python lambda 函数或 Python 匿名函数没有名称。
- 我们可以使用lambda 保留关键字 定义匿名函数。
- 匿名函数的作用域仅限于它定义的当前作用域。
- lambda函数可以有一个或多个参数,但只能有一个表达式。
- 表达式将被求值,结果将从 lambda 函数返回。
- lambda 函数通常与 map()、filter() 和 reduce() 操作一起使用。
Python lambda 函数语法
lambda 函数的语法是:
python
lambda arguments : expressionPython 匿名函数示例
假设我们有一个函数来计算矩形的面积。
python
def area_of_rectangle(l, w):
return l * w
print(f'Area of Rectangle (4, 5) is {area_of_rectangle(4, 5)}')让我们使用 lambda 关键字创建一个匿名函数来获取矩形的面积。
python
rectangle_area = lambda x, y: x * y
print(f'Area of Rectangle (4, 5) is {rectangle_area(4, 5)}')何时使用匿名函数?
- 适用于复杂度不高的小型琐碎任务。
- 当函数只有一个表达式时。
- 适用于性质临时性的重复性任务。
- 当你想让函数的作用域仅限于当前作用域时。
- 当函数参数是另一个函数(例如 map()、filter() 和 reduce() 函数)时,它非常有用。
带有 map() 的 Lambda 函数
map() 函数接受一个函数和一个可迭代对象作为参数。该函数会应用于可迭代对象中的每个元素,并返回更新后的可迭代对象。
假设我们有一个整数列表。我们需要创建一个新列表,将列表中的每个元素乘以 10。这里我们可以使用 lambda 函数,而无需为这个单一用例创建一个函数。
python
list_numbers = [1, 2, 3, 4]
list_numbers = map(lambda x: x * 10, list_numbers)
for num in list_numbers:
print(num, end=" ")输出:

带过滤器的 Lambda 函数()
内置的 filter() 函数接受一个函数和一个可迭代对象作为参数。该函数会应用于可迭代对象的每个元素。如果函数返回 True,则将该元素添加到返回的可迭代对象中。
假设我们有一个整数列表,想要移除所有奇数,最终列表只包含偶数。我们可以使用 lambda 函数的 filter() 函数来实现这个目标。
python
list_numbers = [1, 2, 3, 4, 5, 6]
list_numbers = filter(lambda x: x % 2 == 0, list_numbers)
for num in list_numbers:
print(num, end=" ")
带有 reduce() 的 Lambda 函数
reduce() 函数位于functools模块中。该函数接受一个函数和一个序列作为参数。该函数应接受两个参数:序列中的元素及其累积值。最终结果是一个单一值。
假设我们有一个整数列表,我们想要计算其中所有元素的总和。这里我们可以使用带有 lambda 函数的 reduce() 函数。
python
from functools import reduce
list_ints = [1, 2, 3, 4, 5, 6]
total = reduce(lambda x, y: x + y, list_ints)
print(f'Sum of list_ints elements is {total}')
不带参数的 Python lambda 函数
有人问我,我们是否可以拥有一个不带任何参数的 lambda 函数?
是的,我们可以定义一个不带任何参数的 lambda 函数。但是,这样做毫无意义,因为没有对象可供操作。让我们来看一个简单的例子。
python
get_5 = lambda: 5
print(get_5()) # 5由于 lambda 函数始终返回相同的值,我们可以直接将其赋值给一个变量。不带任何参数使用 lambda 函数显然是滥用此特性。
结论
Python 匿名函数使用 lambda 关键字创建。当函数参数是另一个函数时,匿名函数非常有用。它主要用于创建仅供一次性使用的简单实用函数。