共计 3071 个字符,预计需要花费 8 分钟才能阅读完成。
摘要:明天我就和大家聊聊 lambda 函数,在 Python 编程中,大家习惯将其称为表达式。
本文分享自华为云社区《从零开始学 python | 什么是 Lambda 函数以及如何应用它们?》,原文作者:Yuchuan。
名称是用于援用或寻址任何实体的约定。咱们四周的简直所有事物都有名字。编程畛域也与此统一。但这是必须命名的吗?还是您能够领有“匿名”商品?答案是必定的。Python 提供了 Lambda 函数,也称为匿名函数,实际上是无名的。因而,让咱们按以下程序持续学习 Python 的这些“匿名之谜”。
- Why are Python Lambda Functions required?
- What are Python Lambda Functions?
- How to write Lambda Functions?
- How do Anonymous functions reduce the size of the code?
- Python Lambda functions within user defined functions
- How to use Anonymous functions within:
filter()
map()
reduce()
因而,让咱们开始:)
为什么要应用 Python Lambda 函数?
当您只须要一次应用某些性能时,匿名性能的次要目标就会显现出来。能够在任何须要的中央创立它们。因为这个起因,Python Lambda 函数也称为抛出函数,与其余预约义函数(例如 filter(),map()等)一起应用。与一般的 python 函数。
为了证实这一点,让咱们持续学习 Python Lambda 函数。
什么是 Python Lambda 函数?
Python Lambda 函数是没有任何名称的函数。它们也称为匿名或无名性能。“lambda”一词不是名称,而是关键字。此关键字指定前面的函数是匿名的。
当初您曾经晓得这些匿名函数指的是什么,让咱们进一步理解一下如何编写这些 Python Lambda 函数。
如何用 Python 编写 Lambda 函数?
应用 lambda 运算符创立 Lambda 函数,其语法如下:
句法:
lambda 参数:表达式
Python lambda 函数 能够具备任意数量的参数,但只须要一个 表达式。输出或自变量能够从 0 开始,并能够达到任何限度。就像任何其余函数一样,具备不带输出的 lambda 函数也很好。因而,您能够应用以下任何格局的 lambda 函数:
例子:
lambda:“指定目标”
在这里,lambda 函数不承受任何参数。
例子:
拉姆达一个 1:“指定应用的 1“
在这里,lambda 承受一个输出,即 1。
同样,您能够具备 lambda a 1,a 2,a 3 ..a n。
让咱们举几个例子来证实这一点:
范例 1:
a = lambda x: x*x
print(a(3))
输入: 9
范例 2:
a = lambda x,y: x*y
print(a(3,7))
输入: 21
如您所见,我在这里举了两个例子。第一个示例仅应用带有一个表达式的 lambda 函数,而第二个示例具备传递给它的两个参数。请留神,两个函数都有一个表达式,后跟参数。因而,在须要多行表达式的中央不能应用 lambda 函数。
另一方面,一般的 python 函数能够在其函数定义中应用任意数量的语句。
匿名函数如何缩小代码的大小?
在比拟所需的代码量之前,让咱们首先写下惯例函数的语法,而后将其与后面所述的 lambda 函数的语法进行比拟。
Python 中的任何惯例函数都是应用 def 关键字定义的,如下所示:
句法:
def function_name(parameters):
语句
如您所见,lambda 函数所需的代码量比一般函数少得多。
让咱们用当初的一般函数重写后面的示例。
例子:
def my_func(x):
return x*x
print(my_func(3))
输入: 9
如您所见,在下面的示例中,咱们须要在 my_func 中应用 return 语句来计算 3 的平方值。相同,lambda 函数不应用此 return 语句,而是应用匿名函数的主体在冒号后跟函数自身写在同一行。因而,函数的大小小于 my_func 的大小。
然而,上述示例中的 lambda 函数是应用其余一些变量 a 调用的。这样做是因为这些函数是无名的,因而须要调用某些名称。然而,当您须要理论调配其余名称来调用它们时,为什么要应用这样的无名函数,这一事实仿佛令人困惑?当然,在为我的函数调配名称 a 之后,它不再不再是无名的了!正确的?
这是一个正当的问题,但重点是,这不是应用这些匿名函数的正确办法。
匿名函数最好在其余将函数用作参数或返回函数作为输入的其余 高阶函数 中应用。为了证实这一点,让咱们当初持续进行下一个主题。
用户定义函数中的 Python Lambda 函数:
如上文所述,lambda 函数可在其余函数中应用,以标记出最大的劣势。
以下示例由 new_func 组成,这是一个带有一个参数 x 的惯例 python 函数。而后将此参数增加到通过 lambda 函数提供的未知参数 y 中。
例子:
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
如您所见,在下面的示例中,每当咱们应用 new_func()时,都会调用 new_func 中存在的 lambda 函数。每次,咱们都能够将独自的值传递给参数。
既然您曾经理解了如何在高阶函数中应用匿名函数,那么让咱们持续理解它的最风行用法之一是在 filter(),map()和 reduce()办法中。
如何在 filter(),map()和 reduce()中应用匿名函数:
filter()中的匿名函数:
筛选():
filter()办法用于在另一个作为参数传递的函数的帮忙下,过滤给定的 iterables(列表,汇合等),以测试所有元素为真还是假。
该函数的语法为:
句法:
过滤器(函数,可迭代)
当初思考以下示例:
例子:
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 是可迭代值的列表,该值传递给过滤器函数。此函数应用 lambda 函数查看列表中是否有任何值(除以 3 后等于 2)。输入由满足匿名函数中存在的表达式的列表组成。
地图():
Python 中的 map()函数是将给定函数利用于所有可迭代对象并返回新列表的函数。
句法:
地图(函数,可迭代)
让咱们以一个示例来演示 lambda 函数在 map()函数中的用法:
例子:
my_list = [2,3,4,5,6,7,8]
new_list = list(map(lambda a: (a/3 != 2), li))
print(new_list)
粗体
输入:
[True,True,True,True,False,True,True]
下面的输入显示,只有可迭代变量的值除以 3,就不等于 2,则返回的后果应为 True。因而,对于 my_list 中的所有元素,当条件更改为 False 时,它将返回 true(除了值 6 之外)。
缩小():
reduce()函数用于将某些其余函数利用于作为参数传递给它的元素列表,并最终返回单个值。
该函数的语法如下:
句法:
缩小(性能,程序)
例子:
from functools import reduce
reduce(lambda a,b: a+b, [23,21,45,98])
下图形容了下面的示例:
输入: 187
输入分明地表明,列表的所有元素都被间断增加以返回最终后果。
点击关注,第一工夫理解华为云陈腐技术~