Python Lambda函数

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函数的一些基本程序。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程