Python学习第四十一天—函数7(匿名函数lambda表达式)

[复制链接]
15271953841 发表于 2024-3-5 07:53:41 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

×
本帖最后由 15271953841 于 2024-3-5 07:55 编辑

Python 3.12.1 (tags/v3.12.1:2305ca5, Dec  7 2023, 22:03:25) [MSC v.1937 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license()" for more information.
一、        匿名函数lambda表达式——一行流
lambda arg1,arg2,arg3,…,argN:expression
传统样子:def (lambda)( arg1,arg2,arg3,…,argN):
                   return expression

def squareX(x):
    return x*x

squareX(3)
9
squareY=lambda y : y*y      (lambdaa表达式,整个表达式就是一个函数的引用)
squareY(3)
9
squareX                   (传统定义的函数,函数名就是一个函数的引用)
<function squareX at 0x00000243DD33E660>
squareY
<function <lambda> at 0x00000243DD33E7A0>    (squareY同样也是一个函数的引用)

二、lambda是一个表达式,它可以用在常规不可能存在的地方,比如把它放在列表中,这里普通函数无法做到。
y=[lambda x : x*x,2,3]
y[0](2)
4
y[0](3)
9
y[0](y[1])         (小括号表示调用)
4
y[0](y[2])                 (阎王爷绣荷包,鬼头鬼脑,还耍花招)
9

三、map和filter函数,它们的参数都是要求传入一个用于计算的函数,map函数的第一个参数就是一个函数的引用,剩下的参数要求是序列类型,然后把每个元素挨个传递给第一个参数指定的函数,然后,再运算以后,把它们的结果构成一个迭代器。>>>mapped=map(ord,”FishC”,>>>list(mapped), [70,105,115,104,67].  >>>list(filter(str.islower,”FishC”)),   [“I”,”s”,”h”]

mapped=map(lambda x : ord(x)+10,"FishC")
list(mapped)
[80, 115, 125, 114, 77]
def boring(x):
    return ord(x)+10

list(map(boring,"FishC"))
[80, 115, 125, 114, 77]
list(map(lambda x : ord(x)+10,"FishC"))
[80, 115, 125, 114, 77]
list(filter(lambda x : x%2,range(10)))      (%是除余,偶数除以2的余数为0,为假(False)不能返回,奇数除以2的余数是1,为真(True)都返回。
[1, 3, 5, 7, 9]
filte函数会根据提供的函数对指定的可迭代对象的每一个元素进行运算,并将运算结果为真的元素,以迭代器的形式返回。

总结:lambda是一个表达式,非语句,所以它能够出现在Python语法不允许def语句出现的地方,这是它最大的优势,但由于所有的功能代码局限在一个表达式中实现,因此lambda通常也只能实现那些较为简单的需求。

QQ客服返回顶部