Skip to content

Python lambda 函数

  • Python lambda 函数或 Python 匿名函数没有名称。
  • 我们可以使用lambda 保留关键字 定义匿名函数。
  • 匿名函数的作用域仅限于它定义的当前作用域
  • lambda函数可以有一个或多个参数,但只能有一个表达式。
  • 表达式将被求值,结果将从 lambda 函数返回。
  • lambda 函数通常与 map()、filter() 和 reduce() 操作一起使用。

Python lambda 函数语法

lambda 函数的语法是:

python
lambda arguments : expression

Python 匿名函数示例

假设我们有一个函数来计算矩形的面积。

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=" ")

输出:

Python lambda 函数与 map()

带过滤器的 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=" ")

带过滤器的 Python Lambda 函数

带有 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 函数使用 reduce() 函数

不带参数的 Python lambda 函数

有人问我,我们是否可以拥有一个不带任何参数的 lambda 函数?

是的,我们可以定义一个不带任何参数的 lambda 函数。但是,这样做毫无意义,因为没有对象可供操作。让我们来看一个简单的例子。

python
get_5 = lambda: 5

print(get_5())  # 5

由于 lambda 函数始终返回相同的值,我们可以直接将其赋值给一个变量。不带任何参数使用 lambda 函数显然是滥用此特性。

结论

Python 匿名函数使用 lambda 关键字创建。当函数参数是另一个函数时,匿名函数非常有用。它主要用于创建仅供一次性使用的简单实用函数。

参考: