Python Lambda函数
本教程将研究Python中的匿名函数,通常称为Lambda函数。Lambda函数可以同时接受任意数量的参数,但一次只返回一个参数。我们将了解它们是什么,如何执行它们以及它们的语法。
Python中的Lambda函数是什么
Python中的Lambda函数是匿名函数,意味着它们没有名称。我们已经知道,在Python中创建常规函数需要使用def关键字。我们也可以使用lambda关键字在Python中定义一个无名函数。
语法
Lambda函数的语法如下:-
lambda arguments: expression
这个函数可以接受任意数量的输入,但只计算并返回一个表达式。这意味着它接受多个输入,但只返回一个输出。
只要需要函数参数,就可以使用lambda函数。除了函数中的其他形式以外,在某些编码领域中,它还有各种应用。重要的是要记住,根据语法规则,lambda函数限制为单个语句。
示例
下面我们分享一些用于学习目的的Python lambda函数示例。
程序代码1:
现在我们给出一个lambda函数的例子,它将4加到输入数字中。
# Code to demonstrate how we can use a lambda function for adding 4 numbers
add = lambda num: num + 4
print( add(6) )
输出:
现在我们在Python中编译上面的代码,在成功编译后,我们运行它。然后输出结果如下 –
10
在上面的代码中,我们解释了这段代码。在给定的程序中,lambda函数是”lambda num: num+4″。参数是num,计算和返回的方程式是num * 4。
这个函数没有标签。它生成一个与”add”标识符相关联的函数对象。我们现在可以将其作为一个标准函数来引用。lambda语句”lambda num: num+4″是使用add函数编写的,代码如下:
程序代码2:
现在我们举了一个例子,使用add函数将4添加到输入数字中的lambda函数。代码如下所示:
def add( num ):
return num + 4
print( add(6) )
输出:
现在我们在Python中编译上述代码,并在成功编译后运行它。然后下面给出输出结果 –
10
程序代码 3:
现在我们给出了一个lambda函数的例子,它可以将2个数字相乘并返回一个结果。代码如下所示 –
a = lambda x, y : (x * y)
print(a(4, 5))
输出:
现在我们在Python中编译上述代码,在成功编译后运行它。然后得到的输出如下 –
20
程序代码4:
现在我们给出了另一个例子,这是一个lambda函数,它可以将两个数字相加并返回一个结果。代码如下所示 –
a = lambda x, y, z : (x + y + z)
print(a(4, 5, 5))
输出:
现在我们在Python中编译上面的代码,编译成功后运行它。以下是输出结果 –
14
Lambda和Def函数之间的区别是什么
让我们来看一下这个例子,看看传统的def定义函数与使用lambda关键字定义的函数有什么区别。这个程序计算给定数字的倒数:
程序代码:
# Python code to show the reciprocal of the given number to highlight the difference between def() and lambda().
def reciprocal( num ):
return 1 / num
lambda_reciprocal = lambda num: 1 / num
# using the function defined by def keyword
print( "Def keyword: ", reciprocal(6) )
# using the function defined by lambda keyword
print( "Lambda keyword: ", lambda_reciprocal(6) )
输出:
现在我们在Python中编译上述代码,编译成功后运行它。然后以下面的输出结果表示 –
Def keyword: 0.16666666666666666
Lambda keyword: 0.16666666666666666
解释:
和预期一样,reciprocal()和lambda_reciprocal()函数在上述方案中表现得相似和正确。让我们仔细看一下上面的示例:
这两个函数都返回给定数字的倒数,而无需使用Lambda。然而,我们想要在执行def命令时声明一个名为reciprocal的函数并向其发送一个数字。我们还需要使用return关键字,以便在函数执行后从调用该函数的任何地方提供输出。
使用Lambda: Lambda定义中始终包含一个给定输出语句,而不是使用”return”语句。lambda函数的美妙之处在于它们的便利性。我们不需要将lambda表达式分配给一个变量,因为我们可以将其放置在任何需要函数的地方。
使用Lambda函数与filter()
在Python中,filter()方法接受两个参数:一个函数和一个可迭代对象,比如一个列表。
对于列表的每个项,都会调用该函数,并返回一个新的可迭代对象或列表,其中只包含将该项作为参数传递给函数时返回True的元素。
下面是使用filter()方法从列表中仅返回奇数的简单示例。
程序代码:
这里我们给出了在Python中使用filter()的lambda函数的示例。代码如下 –
# This code used to filter the odd numbers from the given list
list_ = [35, 12, 69, 55, 75, 14, 73]
odd_list = list(filter( lambda num: (num % 2 != 0) , list_ ))
print('The list of odd number is:',odd_list)
输出:
现在我们在python中编译上述代码,编译成功后,我们运行它。然后输出如下 –
The list of odd number is: [35, 69, 55, 75, 73]
使用Lambda函数与map()函数
将一个方法和一个列表传递给Python的map()函数。
该函数对列表中的所有元素执行,并生成一个由给定函数生成的元素组成的新列表。
这个例子中使用map()方法将列表中所有项的平方。
程序代码:
下面给出了在Python中使用map()的lambda函数的例子。
#Code to calculate the square of each number of a list using the map() function
numbers_list = [2, 4, 5, 1, 3, 7, 8, 9, 10]
squared_list = list(map( lambda num: num ** 2 , numbers_list ))
print( 'Square of each number in the given list:' ,squared_list )
输出:
现在我们在Python中编译上述代码,编译成功后,我们运行它。然后输出如下 –
Square of each number in the given list: [4, 16, 25, 1, 9, 49, 64, 81, 100]
使用Lambda函数与列表推导式
在这个例子中,我们将使用Lambda函数与列表推导式和Lambda关键字与for循环结合使用。使用Lambda函数与列表推导式,我们可以打印出从0到10的平方值。为了打印出从0到10的平方值,我们创建了一个从0到11的循环范围。
程序代码:
这里我们用Python给出了一个Lambda函数与列表推导式的例子。代码如下 –
#Code to calculate square of each number of lists using list comprehension
squares = [lambda num = num: num ** 2 for num in range(0, 11)]
for square in squares:
print('The square value of all numbers from 0 to 10:',square(), end = " ")
输出:
现在我们在Python中编译上述代码,在编译成功后运行它。然后输出如下 –
The square value of all numbers from 0 to 10: 0 1 4 9 16 25 36 49 64 81 100
使用lambda函数与if-else
我们将使用lambda函数与if-else块。在下面的程序代码中,我们使用if-else块来检查哪个数字大于给定的两个数字。
程序代码:
这里我们在Python中给出了一个lambda函数与if-else块的示例。代码如下-
# Code to use lambda function with if-else
Minimum = lambda x, y : x if (x < y) else y
print('The greater number is:', Minimum( 35, 74 ))
输出:
现在我们在Python中编译上述代码,在成功编译后运行它。然后下面给出输出结果 –
The greater number is: 35
使用Lambda处理多个语句
在lambda函数中不允许使用多个表达式,但我们可以构造两个或更多lambda函数,然后将第二个lambda表达式作为参数调用第一个。在下面的程序中,我们正在对给定列表中的每个子列表进行排序。让我们使用lambda函数来发现每个子列表中第三大的数字。
程序代码:
这里我们给出一个Python中使用多个语句的lambda函数的示例。代码如下 –
# Code to print the third largest number of the given list using the lambda function
my_List = [ [3, 5, 8, 6], [23, 54, 12, 87], [1, 2, 4, 12, 5] ]
# sorting every sublist of the above list
sort_List = lambda num : ( sorted(n) for n in num )
# Getting the third largest number of the sublist
third_Largest = lambda num, func : [ l[ len(l) - 2] for l in func(num)]
result = third_Largest( my_List, sort_List)
print('The third largest number from every sub list is:', result )
输出:
现在,我们将上面的代码编译成Python,并在成功编译后运行它。然后下面给出了输出 –
The third largest number from every sub list is: [6, 54, 5]
结论:
所以,在这里我们讨论了Python中的Lambda函数。Lambda函数可以同时接受n个参数,但一次只能返回一个参数。在这里我们讨论了一些带有Python程序代码的Lambda函数,我们也分享了一些它们的示例。在这里我们讨论了Lambda函数与列表、映射、过滤、多个语句、if-else以及Python中Lambda函数的一些基本程序。