深入理解Python中的Lambda函数:定义、用法与应用

什么是 lambda 函数?

简单来说,lambda 函数是一个小型匿名函数,这意味着它是没有名称的。lambda 函数可以接受任意数量的参数;然而,它只能有一个表达式。

lambda 函数通常用于其他函数内部,如 map()filter()sort()。它不需要被赋值给一个变量,因此它的行为类似于使用 def 定义的函数。需要注意的是,它并不替代 def,因为 lambda 函数仅限于一个表达式。

我们如何使用 lambda 函数?

语法:

lambda syntax

关键点:

  • lambda 是用于定义函数的关键字。
  • 它可以接受任意数量的参数。
  • 不需要返回语句,因为它会自动计算并返回表达式的值。
  • 通常用于简单函数。
  • 它就像一个“临时”函数。如果编写完整函数没有必要,而你只需要它暂时使用,可以尝试使用 lambda 函数!

示例:

如果你想用常规函数对一个数字进行平方运算,你会写类似这样的代码:

常规 Python 函数示例

lambda 函数的等价形式是:

lambda 函数示例

lambda 函数有什么用?

lambda 函数在作为另一个函数内部使用时展现出它的实用性。

如果您有一个函数定义,它接受一个参数,并且该参数与一个未知的数字相乘,那么它的形式大致如下:

在另一个函数内部的lambda函数

现在,您可以使用这个函数定义来创建一个总是将您输入的数字加倍或加三倍的函数:

加倍和三倍的lambda函数

使用 lambda 函数与 filter()map()sort()

filter() – 用于从一组数据中筛选特定值。

使用 lambda 进行过滤的示例

filter(function, iterable) 只保留函数返回 True 的元素。lambda x: x % 2 == 0 检查数字是否为偶数,逐个进行检查。filter()lambda 应用到 numbers 的每个元素(整数列表 [1-10]),并仅保留返回 True 的元素(即偶数)。filter() 返回一个迭代器,因此我们将其包装在 list() 中以查看过滤后的结果。

map() – 将函数应用于每个元素。

example using lambda with map

map(function, iterable) 将函数应用于 numbers 列表的每个元素。lambda x: x * 2 将列表中的每个数字翻倍。

sort() key – 自定义的排序逻辑。

使用lambda进行排序的示例

sort(key=function) 根据函数的返回值决定元素的排序方式。lambda x: len(x) 根据长度对每种水果进行排序,而不是按字母顺序排序。

lambda 函数的使用案例

在现实世界中,您可能会使用 lambda 来过滤列表中的电子邮件,例如,如果您只想查找 @gmail.com 地址,您将能够保留 @gmail.com 地址。

您可以在遍历列表时使用 lambda 来计算商品价格加税。这样,lambda 将会将每个价格乘以一个税率。

最后,您可以使用 lambda 函数按年龄对人进行排序,这样返回的将是每个人的年龄,而 sort() 将会从最年轻到最年长进行组织。

您将如何尝试使用 lambda 函数?

更多