Python Lambda函数

2025 年 9 月 9 日 | 阅读 6 分钟

在 Python 中,Lambda 函数是简洁的匿名函数,这意味着它们是没有名字的函数。它们用于简化和优化简短的任务。这有助于提高程序的**可读性**。

Python Lambda Functions

语法

以下是 Lambda 函数在 Python 中的语法

参数

  • Lambda 是定义函数的关键字。
  • Arguments 是输入参数,它们是以逗号分隔的列表。
  • Expression 是被计算和返回的实体。

让我们通过示例来看一个 Lambda 函数的实际用例

示例

下面是给参数 x 添加 10 的示例

示例

输出

#value of n

20

说明

在此示例中,“x”是 lambda 函数的输入参数,x + 10 是正在计算的表达式。我们传入了 x 的值并打印了结果输出。

让我们来看另一个例子,以便更清楚地理解

另一个示例

下面是用于相乘参数的示例

示例

输出

20

说明

上面的示例演示了使用 lambda 函数对两个输入参数进行乘法运算。“lambda x,y: x*y”定义了一个匿名(lambda)函数,它接受两个参数 x 和 y,然后返回它们的乘积 (x*y)。

Lambda 结合条件检查

条件语句,如 **if 语句**,可以与 lambda 函数一起使用。让我们来看一个在 lambda 函数中使用条件 if 语句的示例

示例

输出

Odd
Even
Zero

说明

在上面的示例中,我们在 lambda 函数中使用了 *if* 条件。x 是传递给 lambda 函数的参数,在表达式中,我们有条件来判断数字是奇数、偶数还是零。

  • 如果 x == 0,则返回“Zero”
  • 否则,如果 x % 2 == 0,则返回“Even”(偶数),否则返回“Odd”(奇数)。

Lambda 结合列表推导式

列表推导式用于简洁地创建新列表,将其与 Lambda 函数结合使用可以更高效地获得输出。让我们看一个 Lambda 函数与 列表推导式结合的示例

示例

输出

10
20
30
40
50

说明

在上面的示例中,我们在 Lambda 函数中使用了列表推导式。

  • lambda a = x: a * 10 创建了一个将 a 乘以 10 的函数
  • for x in range(1,6) 确定了从 1 到 5 的值。

Lambda 结合 if-else

我们可以使用 if-else 条件语句,这允许我们在函数中处理决策制定。

让我们看一个带 if-else 条件语句的示例

示例

输出

Even
Odd	
Even

说明

在上面的示例中,我们使用 if-else 条件语句来判断数字是奇数还是偶数。“x”是 lambda 函数的输入参数,if-else 语句代表了表达式。

表达式 "Even" if x % 2 == 0 else "Odd" 检查数字是否能被 2 整除。

  • 如果是,则返回“Even”
  • 否则,返回“Odd”

Lambda 结合多个语句

我们可以使用元组、逻辑运算符和逗号分隔的表达式在 lambda 函数中执行多个操作。但是,不允许使用多个语句。我们必须看一个示例来理解这个主题

示例

输出

(7, 12, 0.75, 3)

说明

在上面的示例中,我们执行了多个操作,如加法、乘法、除法和取模。a 和 b 是 lambda 函数的输入参数,元组内的算术运算是被计算和返回的表达式。

将 lambda 与 filter() 一起使用

在 Python 中,filter() 函数接受一个函数和一个列表作为参数。这提供了一种有效的方法来过滤掉条件评估为 True 的元素。

让我们看一个在 filter() 函数中使用 lambda 的示例

示例

输出

[2, 4, 6]

说明

在上面的示例中,我们创建了一个名为 'num' 的列表。“a”是 lambda 函数的输入参数,“a % 2 == 0”是检查数字是否为偶数的表达式。

filter() 函数应用此条件并过滤掉能被 2 整除的数字。

将 lambda 与 map() 一起使用

在 Python 中,map() 函数接受一个函数和一个列表作为参数,它在修改由该函数返回的项目后返回一个新列表。我们现在必须看一个示例来理解 map() 函数

示例

输出

[1, 4, 9, 16]

说明

在上面的示例中,我们创建了一个名为 num 的列表。“x”是 lambda 函数的输入参数,“x ** 2”是计算数字平方的表达式。map() 函数应用此条件,并使用旧列表中的数字的平方创建一个新列表。

将 lambda 与 reduce() 一起使用

在 Python 中,reduce() 函数接受一个函数和一个可迭代对象(如列表)作为参数,并通过反复应用该函数来处理项目,最终返回一个单一的缩减值。要使用 reduce(),我们需要从 functools 模块导入它。

让我们通过一个示例来理解将 lambda 与 reduce() 一起使用

示例

输出

2025

说明

在上面的示例中,我们创建了一个名为 num_list 的列表。“x”和“y”是 lambda 函数的输入参数,“x * 10 + y”是表达式。

它会遍历每个项目

  • 它从前两个元素开始:x=2, y=0,然后 2*10 + 0 = 20
  • 现在 x=20 和 y=2,然后 20*10 + 2 = 202
  • 在此步骤中,x= 202 和 y=5,让我们计算 202*10 + 5 = 2025

因此,我们组合了列表中的元素。

Lambda 和 def 关键字之间的区别

lambda 函数def 函数
它包含一个带有 lambda 的单一表达式它包含多行代码。
它是匿名的,意味着没有名字它必须有一个名字
它只有一个单一的表达式语句。它可以包含许多语句。
它最适合临时和简短的函数。它适用于代码中复杂且可重用的逻辑。

结论

Lambda 函数是简洁的匿名函数;它们用于简化和优化短任务,并有助于提高程序的**可读性**。我们可以将 Lambda 函数与

  • 条件检查
  • 列表推导式
  • if-else
  • 多个语句
  • Filter() 函数
  • Map() 函数
  • Reduce() 函数

Python Lambda 函数常见问题解答

1. 为什么我应该在 Python 中使用 lambda 函数?

Lambda 函数包含一个单一的表达式语句,这使得代码简洁且可读;它是匿名的,最适合临时和简短的函数。

2. 我应该在 Python 中何时使用 lambda 函数?

当需要简洁简短的表达式语句时,或者当您想使用 filter()、map() 和 reduce() 函数使代码更高效、更具可读性时,应该使用 Lambda 函数。

3. Lambda 和 def 之间有什么区别?

Lambda 和 def 之间存在显著的差异。例如,Lambda 包含一个单一表达式,而 def 有多行代码。Lambda 函数是匿名的,但 def 函数必须需要一个名称。

4. Lambda 函数可以包含多个表达式或语句吗?

不,lambda 函数只能包含一个单一表达式。

5. 我可以在 lambda 函数中使用 if-else 吗?

是的,您可以在 lambda 函数中使用条件表达式,如 if-else。


下一个主题Def-function-in-python