在 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 函数内部的语句被执行。
常见问题
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()
函数只从列表中返回偶数。
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()
函数将列表中的所有项加倍。
另请阅读