Python Lambda函数

Python Lambda 函数被称为匿名函数,它是在没有名称的情况下定义的。Python 允许我们不以标准方式声明函数,即使用 def 关键字。相反,匿名函数是通过使用λ关键字声明的。但是,Lambda 函数可以接受任意数量的参数,但是它们只能以表达式的形式返回一个值。

匿名函数包含一小段代码。它模拟 C 和 C++的内联函数,但并不完全是内联函数。

下面给出了定义匿名函数的语法。

句法

lambda arguments: expression     

它可以接受任意数量的参数,并且只有一个表达式。当需要函数对象时,它很有用。

考虑以下 lambda 函数的例子。

例 1

# 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))

输出:

<function <lambda> at 0x0000019E285D16A8>
sum = 30

在上面的例子中,我们定义了λa:a+10匿名函数,其中 a 是一个参数, a+10 是一个表达式。给定的表达式被求值并返回结果。上述 lambda 函数与普通函数相同。

def x(a):
return a+10
print(sum = x(10))

例 2

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))

输出:

mul =  200

为什么要用 lambda 函数?当我们在另一个函数中匿名使用 lambda 函数时,在场景中可以更好地描述 lambda 函数的主要作用。在 Python 中,lambda 函数可以用作高阶函数的参数,后者接受其他函数作为参数。考虑以下示例:
例 1:

#the function table(n) prints the table of n  
def table(n):
return lambda a:a*n # a will contain the iteration variable i and a multiple of n is returned at each function call
n = int(input("Enter the number:"))
b = table(n) #the entered number is passed into the function table. b will contain a lambda function which is called again and again with the iteration variable i
for i in range(1,11):
print(n,"X",i,"=",b(i)) #the lambda function b is called with the iteration variable i

输出:

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 函数与过滤器一起使用()
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)