106. Lambda 表达式- 匿名函数
包含在主题中
#语法简介
【目录】
1.Python保留字
2.知识回顾-def自定义功能
3.Lambda语法
4.Lambda函数调用
4.1 变量调用
4.2 括号调用
4.3 参数调用
4.4 调用返回值
5. 课堂练习
5.1 练习1
5.2 练习2
5.3 练习3
六、总结
[文本]
1.Python保留字【定义】
Python 中的保留字是在编程语言中具有特殊含义或为特定目的而保留的单词。
这些保留字不能用作标识符(变量名、函数名等)。
这是因为Python语言赋予了保留字特定的含义和功能。
Python 中的保留字也称为关键字。
Python 3.x版本中共有33个保留字。
1 [示例]
class:用于定义类。 continue:用于继续下一个循环。 def:用于自定义函数。 for:用于循环迭代。 lambda:用于创建匿名函数。了解如何使用lambda 保留字。
2.知识复习-定义自定义函数目标任务:自定义求和函数。
[代码示例]
#def 自定义函数的保留字
#f 是函数名
#xy是参数名称
def(x,y):
#return 语句返回值x+y。
#x+y 是一个返回两个参数之和的表达式。
返回x+y
#调用函数语法:函数名(参数)
#f是函数名,(2,4)是调用函数时传递的值。
#调用函数时将整数2赋给参数x
#调用函数时将整数4赋给参数y
#2+4=6 返回值为6
f(2,4)
[终端输出]
6
除了def语句之外,还有其他方法可以实现上述代码的功能。
这里不需要了解代码的具体功能,下面会详细解释。
[代码示例]
r=ramdax,y:x+y
r(2,4)
[终端输出]
6
两段代码实现的功能就是求和。
【代码对比】
#方法1
def(x,y):
返回x+y
f(2,4)
#方法2
r=ramdax,y:x+y
r(2,4)
让我们让它变得更困难一点。
目标任务:计算字符串中的单词数。
示例:字符串“hello world!”有2 个单词。
[代码示例]
#def 自定义函数的保留字
#f 是函数名
#str是参数名称
防御(str):
#return 语句返回表达式len(str.split()) 的值。
#len函数的作用是获取对象的长度或元素个数。
#split() 函数用于分割字符串并返回一个列表。
# split() 语法:str.split(sep=,maxsplit=)
# sep 参数指定分隔符。默认为NONE,即全部为空字符(包括空格、换行符等)。
#str.split() 返回由空字符分隔的字符串str 的列表。
#len 函数返回列表中元素的数量,即字符串中单词的数量。
returnlen(str.split())
#调用函数语法:函数名(参数)
#f 是函数名
#当调用该函数时,字符串“helloworld!”被分配给参数str。
# 空格分隔的字符串“helloworld!”包含两个单词,结果为2。
f(‘你好世界!’)
[终端输出]
2
使用lambda来实现上述功能。这是代码:
[代码示例]
r=lambdax:(len(x.split()))
r(‘你好世界!’)
[终端输出]
2
【代码对比】
#方法1
防御(str):
returnlen(str.split())
f(‘你好世界!’)
#方法2
r=lambdax:(len(x.split()))
r(‘你好世界!’)
相关知识请参考以下链接:
33.len函数获取对象的长度或元素数量
54.Python def语句自定义函数
82. 分割方法-分割字符串
3. Lambda 语法lambda [?lamd?]:,希腊字母表的第11 个字母。
Lambda 是Python 的33 个保留字之一,用于创建匿名函数。
Lambda 用于定义可以用一行表达的简单函数。
【官方语法】
结果=lambdaarg1,arg2,arg3……:表达式
【中文版语法】
函数名=lambda 参数1、参数2、参数3: 表达式
【简化版语法】
函数名=lambda 输入参数: 输出表达式
【参数说明】
1.结果:这是一个函数名,实际上是一个变量名。您可以选择任何您想要的名称。
2.lambda是保留字。
3. 在保留字后输入一个空格。
4.arg1、arg2、arg3.可选参数。使用逗号分隔多个参数。
5.英文冒号:
6.expression:必填参数。用于指定一个表达式来实现特定的功能。
我写了三个版本的语法形式,方便大家理解,但本质其实是一样的。
事实上,lambda 的关键在于输入位于冒号之前,输出位于冒号之后。
一共有三个版本,大家可以选择适合自己的版本。
【友情提示】
您可以指定多个参数,但只能指定一个表达式。
【返回值】
返回表达式的结果。
即,返回冒号后面的表达式的结果。
【代码分析】
#语法:函数名=lambda参数:表达式
#r 是函数名
#lambda 是保留字
#x,y 是参数,两个参数之间用逗号分隔。
#参数后跟一个英文冒号:
#英文冒号后面是要输出的内容(表达式x+y)。
r=ramdax,y:x+y
#调用lambda函数并传递参数2和4
#2和4等于6,所以结果是6。
r(2,4)
lambda的作用是返回一个表达式的结果,这里返回的是x+y的结果。
4. 调用Lambda 函数4.1 在变量调用中,将lambda 表达式分配给变量(函数名称)。
[代码示例]
#语法:函数名=lambda参数:表达式
#r 是函数名
#lambda 是保留字
#x,y 是参数,两个参数之间用逗号分隔。
#参数后跟一个英文冒号:
#英文冒号后面是要输出的内容(表达式x+y)。
r=ramdax,y:x+y
#调用lambda函数并传递参数2和4
#2和4等于6,所以结果是6。
r(2,4)
[终端输出]
6
【分析】
r(2,4)
调用变量时,先写变量名(也是函数名)r。变量名后跟英文括号( )。添加括号内传递的参数值。 4.2 括号调用【代码示例】
#匿名函数语法:变量名=lambda参数:表达式
(Lambdax,y:x+y)(2,4)
[终端输出]
6
【分析】
lambda x,y:x+y 这是一个lambda 表达式。
在此lambda 表达式中添加一对英文括号( ),即(lambda x,y:x+y)。
使用括号调用时,请在lambda 表达式后面写一对英文括号。
添加括号内传递的参数值。
(2,4) 在lambda 表达式之后直接传递要调用的值。
(2,4)是传递给匿名函数的实际参数,分别赋值给x和y。
4.3 参数调用列表有排序方法。排序方法的参数之一是排序方法的语法。
listname.sort(键=无,反向=假)
Lambda 表达式可以直接分配给关键参数。这是代码:
# 排序方法语法:listname.sort(key=None, reverse=False)
#lst 是列表名称
#sort是方法名
#key是排序方法的参数
#lambdastr:len(str.split()) 是一个表达式
#str是传递的参数
#len(str.split()) 是要打印的表达式
lst.sort(key=lambdastr:len(str.split()))
这里调用lambda str:len(str.split()) 作为排序方法的关键参数。
这是为了便于理解,下一节将提供更多详细信息。
4.4 返回值调用【代码示例】
#def 保留字定义一个名为f 的函数
#a,b,c是函数的三个参数
def(a,b,c):
#return 返回表达式
#x 是您输入的值
#冒号后面是要输出的表达式
#a*x**2+b*x+c 表示x + b 的平方乘以x + c。
返回lambdax:a*x**2+b*x+c
调用#f函数并传递参数:a=3,b=2,c=1
#f 将调用函数后返回的lambda 表达式赋给变量g
#g=3*x**2+2*x+1
g=f(3,2,1)
调用#g函数并传递参数3,即x=3。
#g=3*3**2+2*3+1
克(3)
[终端输出]
34
5. 课堂练习5.1 练习1【目标布置】
[代码示例]
在Python 中创建lambda 表达式来计算两个数字的乘积。
[代码示例]
#语法:函数名=lambda参数:表达式
#r 是函数名
#lambda保留字
传递给#x,y 的参数名称
#英文冒号:
#输出表达式x*y
r=ramdax,y:x*y
#调用这个lambda函数并传递参数3和4
#3 乘以4 等于12,返回12。
r(3,4)
[终端输出]
12
5.2 练习2 编写一个lambda 表达式,需要输入字符串并返回字符串的长度。
[代码示例]
#语法:函数名=lambda参数:表达式
#str_length是函数名
#lambda保留字
#s要输入的参数
#英文冒号:
#输出len(s) 的表达式
str_length=lambdas:len(s)
#调用str_length函数
#传递参数“Andy Python学习笔记”。这相当于str=’Andy Python学习笔记’。
#函数执行时,返回字符串的长度。
str_length(‘Andy Python学习笔记’)
[终端输出]
12
5.3 在练习3 中,使用lambda 表达式过滤列表,仅保留大于10 的元素。
[filter() 函数]
为了完成上述任务,我们还需要使用filter()函数。
filter() 函数用于通过指定条件来过滤序列。语法是:
Filter(决策函数、可迭代对象)
[代码示例]
创建一个名为#nums 的列表
数字=[5,12,8,15,3,20]
#lambda表达式为:lambda x:x10;即输入x,输出数字x10。
#list() 函数将filter() 函数的返回值转换为列表类型。
Filtered_nums=列表(过滤器(lambdax:x10,nums))
打印(过滤后的数字)
[终端输出]
[12,15,20]
我还没学过过滤功能,所以暂时了解一下。
6.总结【图片总结】
2.内存
bda表达式【代码总结】
#lambdatotal
r=ramdax,y:x+y
r(2,4)
#搜索lambda 产品
r=ramdax,y:x+y
r(2,4)
#lambda 计算字符串中的单词数
r=lambdax:(len(x.split()))
r(‘你好世界!’)
#括号内调用lambda函数
(Lambdax,y:x+y)(2,4)
#参数调用lambda函数
lst.sort(key=lambdastr:len(str.split()))
#Expression 调用lambda 函数
def(a,b,c):
返回lambdax:a*x**2+b*x+c
g=f(3,2,1)
克(3)
#lambda计算字符串长度
str_length=lambdas:len(s)
str_length(‘Andy Python学习笔记’)
#lambda过滤数字并输出大于10的数字
数字=[5,12,8,15,3,20]
Filtered_nums=列表(过滤器(lambdax:x10,nums))
打印(过滤后的数字)
作者微信:xyz77520520