Python Lambda/匿名函数

在 Python 中,lambda 函数是一种没有函数名的特殊函数。例如,

lambda : print('Hello World')

这里,我们创建了一个打印 'Hello World' 的 lambda 函数。

在学习 lambda 之前,请确保你了解 Python 函数


Python Lambda 函数声明

我们使用 lambda 关键字而不是 def 来创建一个 lambda 函数。下面是声明 lambda 函数的语法:

lambda argument(s) : expression 

这里,

  • argument(s) - 传递给 lambda 函数的任何值
  • expression - 被执行并返回的表达式

让我们看一个例子,

greet = lambda : print('Hello World')

在这里,我们定义了一个 lambda 函数,并将其赋给了名为 greet变量

要执行这个 lambda 函数,我们需要调用它。下面是我们如何调用这个 lambda 函数:

# call the lambda
greet()

上面的 lambda 函数只是简单地打印文本 'Hello World'

注意:这个 lambda 函数没有任何参数


示例:Python Lambda 函数

# declare a lambda function
greet = lambda : print('Hello World')

# call lambda function
greet()

# Output: Hello World

在上面的例子中,我们定义了一个 lambda 函数,并将其赋给了 greet 变量。

当我们调用这个 lambda 函数时,lambda 函数内部的 print() 语句被执行。


带参数的 Python lambda 函数

与普通函数类似,lambda 函数也可以接受参数。例如,

# lambda that accepts one argument
greet_user = lambda name : print('Hey there,', name)

# lambda call
greet_user('Delilah')

# Output: Hey there, Delilah

在上面的例子中,我们把一个 lambda 函数赋给了 greet_user 变量。

这里,lambda 关键字后面的 name 指定了该 lambda 函数接受一个名为 name 的参数。

注意 lambda 函数的调用,

greet_user('Delilah')

这里,我们向 lambda 函数传递了一个字符串'Delilah'

最后,lambda 函数内部的语句被执行。


常见问题

如何将 lambda 函数与 filter() 一起使用?

Python 中的 filter() 函数接受一个函数和一个可迭代对象(列表元组字符串)作为参数。

该函数会对列表中的所有项进行调用,并返回一个新列表,其中包含使函数求值为 True 的项。

让我们看一个例子,

# program to filter out only the even items from a list
my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(filter(lambda x: (x%2 == 0) , my_list))

print(new_list)

# Output: [4, 6, 8, 12]

在这里,filter() 函数只从列表中返回偶数。

如何将 lambda 函数与 map() 一起使用?

Python 中的 map() 函数接受一个函数和一个可迭代对象(列表、元组和字符串)作为参数。

该函数会对列表中的所有项进行调用,并返回一个新列表,其中包含该函数对每一项返回的结果。

让我们看一个例子,

# Program to double each item in a list using map()

my_list = [1, 5, 4, 6, 8, 11, 3, 12]

new_list = list(map(lambda x: x * 2 , my_list))

print(new_list)

# Output: [2, 10, 8, 12, 16, 22, 6, 24]

在这里,map() 函数将列表中的所有项加倍。


另请阅读

视频:Python Lambda

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战