Python Lambda函数的几种使用方法
Posted tianqianlan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python Lambda函数的几种使用方法相关的知识,希望对你有一定的参考价值。
在进行编程时,一般我们会给一个函数或者变量起一个名字,该名称是用于引用或寻址函数变量。但是有一个低调的函数,你不需要赋予它名字,因此该函数也叫匿名函数。该函数就是Python中的Lambda函数,下面就来为大家解析lambda函数的基本使用方法。
为什么要使用Python Lambda函数?
匿名函数可以在程序中任何需要的地方使用,但是这个函数只能使用一次,即一次性的。因此Python Lambda函数也称为丢弃函数,它可以与其他预定义函数(如filter(),map()等)一起使用。相对于我们定义的可重复使用的函数来说,这个函数更加简单便捷。
如何在Python中编写Lambda函数?
Lambda函数是使用lambda运算符创建的,其语法如下:
语法: lambda参数:表达式
Python lambda函数可以包含任意多的参数,但它只有一个表达式。输入或参数可以从0开始。就像任何其他函数一样,lambda函数也可以是没有输入的。下面为大家举个例子:假如我们计算一个数的平方,则程序为:
1 a = lambda x: x*x
2 print(a(3)
输出结果为:9
相应的,如果我们要计算两个数相乘,则:
a = lambda x,y: x*y
print(a(3,7))
输出结果为:21
在这两个例子中,第一个示例lambda函数只使用一个表达式,而第二个示例有两个参数。而且这两个函数都有一个表达式后跟参数。因此有多种逻辑关系表达式的时候不能使用lambda函数。
匿名函数加速Python运行
在比较所需的代码量之前,让我们首先记下正常函数的语法,并将其与前面描述的lambda函数进行比较。Python中的任何普通函数都是使用def关键字定义的,具体语法如下所示:
def function_name(参数):
statement(s)
因此lambda函数所需的代码量远远少于普通函数,也就是说使用Lambda可以精简代码,加速Python程序运行。让我们举个例子对比一下:
#——————————一般函数
def my_func(x):
return x * x
print(my_func(3))
#————————Lambda函数
a = lambda x,y: x*y
print(a(3,7))
在上面的示例中,我们需要在my_func中使用return语句来计算3的平方值。相反,lambda函数不使用此return语句,因此Lambda函数计算的速度快于my_func函数。
Python Lambda函数的几种使用方法
示例一:定义一个普通的python函数并嵌入Lambda,函数接收传入的一个参数x。然后将此参数添加到lambda函数提供的某个未知参数y中求和。只要我们使用new_func(),就会调用new_func中存在的lambda函数。每次,我们都可以将不同的值传递给参数。
def new_func(x):
return(lambda y:x + y)
t = new_func(3)
u = new_func(2)
print(t(3))
print(u(3))
输出结果为:6,5
示例二:Lambda函数+filter函数
filter()方法用于根据一定的条件对给定的列表进行过滤。使用示例如下:
my_list = [2,3,4,5,6,7,8]
new_list = list(filter(lambda a:(a / 3 == 2),my_list))
print(new_list)
输出结果为:[6]。
此示例中my_list是一个列表,它作为参数传递给filter函数。此函数使用lambda函数检查列表中的值是否满足除以3等于2的条件,输出列表中满足条件的值。
示例三:Lambda函数+map函数
Python中的map()函数是一个将给定的列表的值依次在所定义的函数关系中迭代并返回一个新列表。例如:
my_list = [2,3,4,5,6,7,8]
new_list = list(map(lambda a:(a / 3!= 2),li))
print(new_list)
输出结果为:[真,真,真,真,假,真,真]
示例四:Lambda函数+reduce函数
reduce() 函数会对参数序列中元素进行累积。使用示例如下:
from functools import reduce
reduce(lambda a,b:a + b,[23,21,45,98])
输出结果为:187
以上是关于Python Lambda函数的几种使用方法的主要内容,如果未能解决你的问题,请参考以下文章