📅  最后修改于: 2020-10-24 09:15:13             🧑  作者: Mango
Python Lambda函数被称为不带名称的匿名函数。 Python允许我们不以标准方式声明函数,即,使用def关键字。而是使用lambda关键字声明匿名函数。但是,Lambda函数可以接受任意数量的参数,但是它们只能以表达式形式返回一个值。
匿名函数包含一小段代码。它模拟C和C++的内联函数,但它并不完全是内联函数。
下面给出了定义匿名函数的语法。
lambda arguments: expression
它可以接受任意数量的参数,并且只有一个表达式。当需要函数对象时,它很有用。
考虑下面的lambda函数示例。
# a is an argument and a+10 is an expression which got evaluated and returned.
x = lambda a:a+10
# Here we are printing the function object
print(x)
print("sum = ",x(20))
输出:
at 0x0000019E285D16A8>
sum = 30
在上面的示例中,我们定义了lambda a:a + 10匿名函数,其中a是参数,而a + 10是表达式。给定的表达式将被求值并返回结果。上面的lambda函数与普通函数相同。
def x(a):
return a+10
print(sum = x(10))
Lambda函数的多个参数
# a and b are the arguments and a*b is the expression which gets evaluated and returned.
x = lambda a,b: a*b
print("mul = ", x(20,10))
Output:
mul = 200
Why use lambda function?
The main role of the lambda function is better described in the scenarios when we use them anonymously inside another function. In Python, the lambda function can be used as an argument to the higher-order functions which accepts other functions as arguments.
Consider the following example:
Example 1:
输出:
Enter the number:10
10 X 1 = 10
10 X 2 = 20
10 X 3 = 30
10 X 4 = 40
10 X 5 = 50
10 X 6 = 60
10 X 7 = 70
10 X 8 = 80
10 X 9 = 90
10 X 10 = 100
lambda函数通常与Python内置函数filter()函数和map()函数。
将lambda函数与filter()一起使用
Python内置的filter()函数接受一个函数和一个列表作为参数。它提供了一种过滤掉序列中所有元素的有效方法。它返回新的序列,其中函数求值为True。
考虑以下示例,其中我们从给定列表中过滤出唯一的奇数。
#program to filter out the tuple which contains odd numbers
lst = (10,22,37,41,100,123,29)
oddlist = tuple(filter(lambda x:(x%3 == 0),lst)) # the tuple contains all the items of the tuple for which the lambda function evaluates to true
print(oddlist)
输出:
(37, 41, 123, 29)
将lambda函数与map()一起使用
Python的map()函数接受一个函数和一个列表。它提供了一个新列表,其中包含该函数为每个项目返回的所有已修改项目。
考虑下面的map()函数示例。
#program to filter out the list which contains odd numbers
lst = (10,20,30,40,50,60)
square_list = list(map(lambda x:x**2,lst)) # the tuple contains all the items of the list for which the lambda function evaluates to true
print(square_tuple)
输出:
(100, 400, 900, 1600, 2500, 3600)