版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第4章
函数自定义函数函数的高级用法字符串与集合函数常用函数思维导图知识目标理解掌握熟悉24掌握常用函数的使用熟悉自定义函数的定义和调用1熟悉字符串的常用函数3理解函数的参数传递技能目标掌握熟悉学会掌握自定义函数的编程应用12熟悉掌握字符串的编程应用3学会文本解析的操作方法4学会综合运用所学知识解决实际编程问题思政目标123弘扬自信自强、守正创新、踔厉奋发、勇毅前行的精神品质。通过“杀毒软件之父,王江民”的学习,鼓励学生明确目标、持之以恒。面对困难要保持锐意进取、克难攻坚的奋斗精神。目录函数的高级用法4.24.1自定义函数4.3字符串与集合函数44常用函数知识架构4.1自定义函数12354函数定义函数调用按值传递和引用传递return语句学生实践练习4.1自定义函数1
函数定义
函数是组织好的,可重复使用的,用来实现单一或相关联功能的代码段。函数能提高应用的模块性和代码的重复利用率,可调用该函数执行函数定义的特定任务。通过使用函数,程序的编写、阅读、测试和修复都将更容易。
函数定义的几个规则如下:
(1)函数代码块以def关键词开头,后接函数标识符名称和圆括号()。
(2)任何传入参数和自定义变量必须放在圆括号中间。
(3)函数内容以冒号起始,并且缩进。
(4)return[表达式]结束函数,选择性地返回一个值给调用方,不带表达式的
return相当于返回None。【语法】def函数名称(参数):'''函数_文档字符串'''函数执行语句return[expression]4.1自定义函数1
函数定义其中参数的定义包括以下4种方式。
(1)(arg1,arg2,…):一个函数可以定义多个参数,每个参数间用逗号分割,
用这种方式定义的函数在调用时也必须在函数名后的小括号里提供个数相等的值(实际参数,简称实参),而且顺序必须相同,也就是说在这种调用方式中,形参和实参的个数必须一致,而且必须一一对应,即第一个形参对应第一个实参。
(2)(arg1,arg2=value2,…):第一种的改进版,提供了默认值,调用该函数,如a(1,2)则arg1取1,arg2取2,但是如果按a(1)调用,则不会报错,这个时候arg1取1,arg2则为默认的value2。
(3)(*arg1):上述两种方式均是有多少个形参,就传入多少个实参,当不确定有多少个参数时,可以采用第三种方式,即以一个“*”加上形参名的方式来表示这个函数的实参个数不确定,可能有0个也可能有多个。注意:不管有多少个,在函数内部都被存放在以形参名为标识符的元组中。4.1自定义函数1
函数定义
(4)(**arg1):在形参名前加两个“*”,表示参数在函数内部将被存放在以形参名为标识符的dictionary中,这时调用函数时需要采用arg1=value1,arg2=value2这样的形式。例如,使用a(x=1,y=2,z=3)方式,则参数会以{'y':2,'x':1,'z':3}方式保存。如定义一个计算最大值的方法,参考代码如下:defcalMax(a,b):
'''函数的文档注释,求两个数的最大值'''
ifa>b:
print("最大值为",a)
returna
print("最大值为",sb)
returnb4.1自定义函数2
函数调用
定义函数时只给了函数一个名称,指定了函数里包含的参数和代码块结构函数,因此定义后没有被调用是不会执行函数中的代码块的。【语法】函数名称(参数)【示例4.1】定义求两个数的最大值的calMax()函数,并调用该函数。defcalMax(a,b):
'''函数的文档注释,求两个数的最大值'''
ifa>b:
print("最大值为",a)
returna
print("最大值为",b)
returnbnum1=int(input("请输入一个数字:"))num2=int(input("请再输入一个数字:"))calMax(num1,num2)4.1自定义函数2
函数调用定义并调用calMax()函数的运行结果如图4.1所示。
通过示例4.1分析可知,函数调用时传入的参数个数必须与函数定义时的参数个数保持一致,并且一一对应。4.1自定义函数3
按值传递和引用传递
传递参数时,Python不允许开发者指定使用传值还是传引用。Python参数传递采用的是“传对象引用”的方式。实际上,这种方式相当于传值和传引用的一种综合。
如果函数收到的是一个可变对象(如字典或者列表)的引用,就能修改对象的原始值—相当于通过“传引用”来传递对象。如果函数收到的是一个不可变对象(如数字、字符串或者元组)的引用,就不能直接修改原始对象—相当于通过“传值”来传递对象。
在Python中,strings、tuples和numbers是不可更改的对象,而list、dict等则是可以修改的对象。4.1自定义函数3
按值传递和引用传递【示例4.2】在一个函数中分别改变数字、字符串和元组的值,观察这三个值是否改变。defchangeValue(num,string,my_tuple):
num=5
string="Trumple"
my_tuple=(3,6)num=8string="Kitty"my_tuple=(4,8)changeValue(num,string,my_tuple)print(num,string,my_tuple)4.1自定义函数3
按值传递和引用传递观察值的改变的运行结果如图4.2所示。
通过对示例4.2进行分析可知,如果函数收到的是一个不可变对象(如数字、字符串或者元组)的引用,就不能直接修改原始对象,相当于通过“传值”来传递对象。4.1自定义函数3
按值传递和引用传递【示例4.3】定义一个修改字典或列表元素的函数,修改后,观察列表或字典对象是否被改变。defchangeValue(my_list,my_dict):
'''方法注释,修改列表或字典的值'''
my_list[0]="James"
my_dict["name"]="Kobe"my_list=["wade","bosh","harden"]my_dict={"name":"paul","age":32}changeValue(my_list,my_dict)#调用changeValue函数print(my_list)print(my_dict)4.1自定义函数3
按值传递和引用传递观察列表或字典对象的改变的运行结果如图4.3所示。
通过对示例4.3进行分析可知,如果函数收到的是一个可变对象(如字典或者列表)的引用,就能修改对象的原始值,相当于通过“传引用”来传递对象。4.1自定义函数4return语句
return语句可以从Python函数中返回一个值,每个函数都要有一个返回值。如果没有用return语句返回值,那么将得到一个None对象的结果,而None表示没有任何值。在函数调用时可以将调用语句看作一个具体的值,将该值赋给一个变量。同时,return语句表示函数的结束,虽然在Python语言中可以在return语句后再添加其他执行代码,但return语句后同一范围内的执行代码都不会被执行。
【示例4.4】首先定义一个获取两个数中的最大数的函数,然后通过该函数分别获取3个数、4个数的最大数。defcalMax(a,b):
'''获取两个数的最大数'''
ifa>b:
returna
returnb
print("return后的语句")#在return语句后的代码都不会执行num=calMax(23,45)print("calMax(23,45)结果为:",num)print("calMax(56,11)结果为:",calMax(56,11))print("6,9,13的最大值为",calMax(6,calMax(9,13)))print("6,15,13,12的最大值为",calMax(calMax(6,15),calMax(13,12)))4.1自定义函数4return语句
获取最大数的运行结果如图4.4所示。
通过对示例4.4进行分析可知,在函数调用时可以将调用语句看作一个具体的值,如在该例中可以将calMax(9,13)看作具体的数值13。该数值可以赋值给一个变量,也可以在代码中看作值的直接使用。另外,可以注意到函数中return后面的print语句没有被执行。4.1自定义函数5
学生实践练习1.需求说明
定义一个接收4个参数的函数,最后一个参数为可选的布尔型参数,前3个参数为带排序的数字。在不指定时排序为正序,指定时排序为倒序,效果如图4.5所示。2.实现思路
(1)将前3个参数放置在一个列表中。
(2)判断最后一个参数是否为指定,依据布尔类型来决定是否按正序排列,运行结果如图4.5所示。知识架构4.2函数的高级用法1234传递参数结合循环使用函数函数模块中的调用学生实践练习4.2函数的高级用法1
传递参数函数中传递参数的常见情况,分为以下三种。1.传递可选参数
在上一节中讲过函数参数的几种表示方法,其中一种就是以提供默认值的方式来传递参数的。有时候,需要让实参变成可选的,这样使用函数的人就只需要在必要时才提供额外的信息,可以使用默认值来实现让参数变成可选的。
【示例4.5】定义一个函数,它接收3个参数,其中第三个参数为可选参数,默认值为空。4.2函数的高级用法1(1)使用两个参数调用可选参数的函数,代码如下:deffunc_info(name,age,city=''):
ifcity:
information='姓名:'+name+',年龄:'+str(age)+',城市:'+city
else:
information='姓名:'+name+',年龄:'+str(age)
returninformationinformation=func_info('张三',20)print(information)运行该代码,输出结果如图4.6所示。4.2函数的高级用法1(2)传递3个参数,查看调用结果,代码如下:information2=func_info('李四',19,'北京')print(information2)运行该代码,输出结果如图4.7所示。
从图4.7所示的输出结果可以看出,该函数接收了3个参数后,输出的字符串包含了第三个参数的相关信息。
【注意】在定义可选参数函数的传递参数时,必须要将可选参数定义在参数列表的最后,否则会报错。4.2函数的高级用法1(3)错误的定义方式,代码如下:deffunc_info_v2(name,city='',age):
pass
returnNoneinformation=func_info_v2('张三',20)print(information)运行该代码,输出结果如图4.8所示。4.2函数的高级用法12.传递任意数量的参数
在预先不知道需要接收多少个实参时,使用“*args”来指定函数的形参,这时会让Python创建一个名为args的空元组,并将接收到的所有值都封装到这个元组中,即使该元组只有一个元素也如此。之后如果要获取某个参数时,可以通过形参的位置来指定,这在编写main()函数时非常重要。【示例4.6】定义一个函数,通过不同的方式获取函数中的参数。(1)定义一个多参数的函数,代码如下:deffunc_args(*args):
returnargs在上述代码中,定义了一个接收任意数量参数的函数,并将接收到的参数返回。4.2函数的高级用法1(2)给定义好的函数传递任意个参数,并查看返回值,代码如下:names=func_args('tom','jerry','cat','dog')print(names)运行该代码,输出结果如图4.9所示。从输出可知,该函数实现了将所有参数返回的功能。4.2函数的高级用法1(3)这时可以使用Python遍历的方式获取每一个参数的值,代码如下:foriteminnames:print(item)运行该代码,输出结果如图4.10所示。4.2函数的高级用法1
(4)也可以使用位置来分别获取可变参数中的第一个值和最后一个值,代码如下:print(names[0])print(names[-1])运行该代码,输出结果如图4.11所示。4.2函数的高级用法13.结合位置实参与任意实参
如果要让函数接收不同类型的实参,必须在函数定义中将接收任意数量实参的形参放在参数列表中最后的位置,Python会先匹配位置实参和关键字实参,再将余下的实参都收集到最后一个形参中。详情见示例4.7。
【示例4.7】定义一个接收单个实参和多个形参的函数,它实现将实参与形参分别打印的效果。deffunc_arg_args(items_class,*itmes):print('函数的实参是:',items_class)print('函数的形参是:',itmes)func_arg_args('animal','cat','dog','rat')运行该代码,输出结果如图4.12所示。4.2函数的高级用法2
结合循环使用函数
可以将函数与任何Python结构结合起来使用,最常用的方式是将函数与while循环结合起来使用,详细代码见示例4.8。【示例4.8】(1)定义一个函数,代码如下:defsay_hello(name):
return'Hello,'+name.title()
(2)将while循环与上述函数结合起来,每当用户输入姓名后,返回一个欢迎的语句,代码如下:whileTrue:
name=input('请输入的姓名:')
print(say_hello(name)4.2函数的高级用法2
结合循环使用函数运行该代码,输出结果如图4.13所示。
此循环存在一个问题,在用户输入一系列名字后,没有提供终止程序的方法,因此应该将此程序进行改写,在提示用户输入时,先判断是否要退出该程序。4.2函数的高级用法2
结合循环使用函数(3)改进while循环,提供终止的相关方法,代码如下:whileTrue:name=input('请输入的姓名(键入“q”来退出该程序):')ifname=='q':breakelse:print(say_hello(name))运行该代码,输出结果如图4.14所示。
在上述代码中,提示用户输入姓名前,告诉用户使用q键来终止程序运行,然后将接收到的用户输入进行判断,一旦判断是q,则使用break语句退出程序。4.2函数的高级用法3函数模块中的调用
函数的优点之一是使用它们可将代码块与主程序分离,从而降低它们之间的耦合性。通过给函数指定描述名称,可让主程序更容易理解。还有一种更高级的用法是将函数储存在被称为模块的独立文件中,再将模块导入主程序中,import语句允许在当前运行的程序文件中使用模块中的代码。
通过将函数存储在独立的文件中,可以隐藏程序代码的细节,将重点放在程序的主要逻辑之上,而且,一旦将函数存储在独立的文件中后,可与其他开发者共享这些文件而不是整个程序,详见示例4.9。【示例4.9】
(1)编译一个my_func.py的文件,该文件内主要包含两个函数,分别是get_detail()函数和say_hello()函数,代码如下:defget_detail(arg,*args):
print('输入的类别是:',arg)
foriteminargs:
print('-',item)
defsay_hello(name):
print('Hello,',name.title())4.2函数的高级用法3函数模块中的调用
(2)在my_func.py文件所在的目录内再新建一个use_func.py的函数,然后使用import语句将my_func模块导入,并尝试调用my_func中定义的函数,代码如下:importmy_funcmy_func.get_detail('animals','cat','dog','rat')my_func.say_hello('tom')
在上述代码中,首先导入了之前定义的函数模块,然后使用“模块名.函数名”的方式传递参数,运行该代码,输出结果如图4.15所示。从输出结果中可知,它实现了模块之间的函数调用。4.2函数的高级用法3函数模块中的调用(3)改写use_func.py,实现导入特定的函数,代码如下:frommy_funcimportget_detailget_detail('animals','cat','dog','rat')
在上述代码中,在导入函数模块时,使用了“from模块名import函数名”的方式导入了模块中的函数,在使用函数时就无须指定该函数的模块,直接使用函数名完成函数的调用。运行以上代码,输出结果如图4.16所示。
【注意】这里仅导入了my_func模块中的get_detail()函数,而模块中的say_hello()函数并未导入,如果调用say_hello()函数就会报错。4.2函数的高级用法3函数模块中的调用
(4)可以使用as来对模块起别名,如使用语句“import模块名as别名”来实现。例如重写use_func.py,代码如下:importmy_funcasff.get_detail('animals','bird','fish','lion')f.say_hello('tom')
在上述代码中,导入了函数模块my_func,并且为该函数模块起别名为f,之后,想要调用该模块中的函数,使用“别名.函数名”的方式就可以完成函数的调用。
运行以上代码,输出结果如图4.17所示。4.2函数的高级用法4函数模块中的调用
(5)给函数指定别名,重写use_func.py文件,使用语句“from模块名import函数名as别名”的方式完成函数的调用,代码如下:frommy_funcimportsay_helloasss('jerry')
上述代码,在模块my_func中导入了say_hello()函数,并给该函数起别名为s,在调用时直接使用s()函数即可。
运行以上代码,输出结果如图4.18所示。观察输出结果,可以发现它同样可以正常完成函数的调用。4.2函数的高级用法5学生实践练习1.需求说明
模拟银行账户存取款及查看余额功能,分别定义函数实现银行账户存款、取款及查看余额功能。可以使用参数和返回值进行数据传递。初步设定账户的余额为10000元,效果如图4.19所示。2.实现思路
(1)将账户信息(用户名和余额)保存在一个字典的对象中。
(2)定义3个函数,分别用于实现存款、取款及查看余额的功能,运行结果如图4.19所示。知识架构4.3字符串与集合函数1234字符串的定义字符串的常用函数集合类操作函数学生实践练习4.3字符串与集合函数1
字符串的定义
字符串是Python中最常用的数据类型,可以使用引号(单引号'或双引号")来创建字符串。创建字符串很简单,只要为变量分配一个值即可。【语法】变量名='字符串的值'变量名="字符串的值"字符串的使用示例如下:var1='HelloWorld!'var2="PythonRunoob"
Python访问子字符串,可以使用方括号来截取字符串。使用“变量[头下标:尾下标]”的方式,就可以截取相应的字符串,从左到右索引默认从0开始,从右到左索引默认从−1开始,下标可以为空,表示取到头或尾。
Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符%s的字符串中。在Python中,字符串格式化使用与C语言中的sprintf函数一致。4.3字符串与集合函数1
字符串的定义
【示例4.10】获取字符串中前5个字符、第3个到第6个字符及最后5个字符的子字符串。var="Helloworld!"print("前5个字符为",var[:5])print("第3到第6个字符为",var[3:6])print("最后5个字符为",var[-5:])print("姓名为%s,年龄为%d"%('James',37))截取字符串的运行结果如图4.20所示。
通过对示例4.10进行分析可知,可以使用“变量[头下标:尾下标]”的方式截取字符串中的任意一个子字符串。4.3字符串与集合函数1
字符串的定义
Python中定义一个Unicode字符串和定义一个普通字符串一样简单,引号前小写的“u”表示此处创建的是一个Unicode字符串。如果想加入一个特殊字符,可以使用Python的Unicode-Escape编码,如定义变量“var=u'Hello\u0020World!'”,则变量输出为“HelloWorld!”。
Python中三引号可以将复杂的字符串进行复制。Python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符及其他特殊字符。三引号让程序员从引号和特殊字符串的泥潭中解脱出来,自始至终保持字符串的格式是WYSIWYG(所见即所得)格式的。
当需要一个HTML脚本或者SQL语句时,这时用字符串组合,特殊字符串转义将会非常烦琐,但使用三引号可以轻松地解决该问题。【语法】变量名="""字符串内容"""变量名='''字符串内容'''如定义一个HTML格式的字符串,代码如下:html='''<INPUTTYPE=buttonVALUE=BackONCLICK="window.history.back()"/>'''4.3字符串与集合函数2字符串的常用函数字符串提供了很多内置的函数,详情见表4.1。4.3字符串与集合函数2字符串的常用函数【示例4.11】给定一段字符串,从这段字符串中解析出时间的字符串。html='''<divclass="about">
2017-08-0214:44:35<br/>
来源:中国台州网<br/>'''lindex=html.find('class="about">')#查找class="about">在字符串的位置str_len=len('class="about">')brIndex=html.find('<br/>')#查找<br/>在字符串的位置timestr=html[lindex+str_len:brIndex]timestr=timestr.strip()#去除字符串两边的空格print(timestr)解析时间字符串的运行结果如图4.21所示。4.3字符串与集合函数3集合类型操作函数
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能循环遍历或使用in、notin来访问或判断集合元素,也可以通过等价(==)和不等价(!=)判断两个集合是否相等。
集合提供了一系列的函数用于添加、删除和修改元素,详情见表4.2。4.3字符串与集合函数3集合类型操作函数集合还提供了其他操作符,其中包括以下4种操作符。
(1)联合(|):联合(Union)操作与集合的or操作其实是等价的,联合符号等价于union()方法。如果有两个集合s1和s2,则集合s1和s2的联合为s3=s1|s2或者s3=s1.union(s2)。
(2)交集(&):与集合and等价,交集符号等价于intersection()方法。
(3)查补(-):等价于difference()方法。
(4)对称差分(^):对称差分是集合的xor(异或),取得的元素属于s1、s2但不同时属于s1和s2,等价于symmetric_difference()方法。【说明】集合、列表、元组和字符串之间可以互相进行转换,转换方法如下:(1)list(s1):将集合s1转化为列表。(2)str(s1):将集合s1转化为字符串。(3)tuple(s1):将集合s1转化为元组。4.3字符串与集合函数3集合类型操作函数【示例4.12】给定两个集合,并求这两个集合的并集。s1=set([3,5,8])s1.add(9)#添加一个元素foriins1:#访问集合s1的所有元素
print(i,"\t")s2=set([5,11,13])print(s1.difference(s2))#查找集合s1和集合s2不同的元素print(s1|s2)#计算集合s1和集合s2的并集集合操作的运行结果如图4.22所示。a4.3字符串与集合函数4学生实践练习1.需求说明2.实现思路
(1)将小明和小王的爱好列表分别保存在两个集合中。
(2)通过集合的并集和交集等函数得到两人共同的爱好、两个人所有的爱好及小明有的但小王没有的爱好。
小明和小王都有不同的爱好,在控制台分别输入小明和小王的爱好列表(多个爱好之间使用“,”分隔),分别输出两人共同的爱好、两个人所有的爱好及小明有的但小王没有的爱好。知识架构4.4常用函数12354print()函数join()函数与split()函数enumerate()函数与zip()函数lambda函数学生实践练习4.4常用函数1print()函数
无论什么类型,如数值、布尔、列表及字典等都可以使用print()函数进行输出。在Python2.x版本中使用print()函数可以不用加括号,而在Python3.x版本中必须加括号才能使用。
print()函数支持格式化的输出,如print("Nameis%s,Ageis%d"%("James",35))。格式化输出包括以下几点:
(1)%字符:标记转换说明符的开始。
(2)转换标志:“-”表示左对齐;“+”表示在转换值之前要加上正负号;“”(空白字符)表示正数之前保留空格;0表示转换值,若位数不够,则用0填充。
(3)最小字段宽度:转换后的字符串至少应该具有该值指定的宽度。如果是*,则宽度会从值元组中读出。
(4)点(.)后跟精度值:如果转换的是实数,精度值就表示出现在小数点后的位数。如果转换的是字符串,那么该数字就表示最大字段宽度。如果是*,那么精度将从元组中读出。
(5)字符串格式化转换类型,格式化转换类型见表4.3。4.4常用函数1print()函数4.4常用函数1print()函数【示例4.13】实现各种格式的字符串输出。pi=3.141592653print("姓名为%s,年龄为%d"%("Paul",32))print('%10.3f'%pi)#字段宽10,精度3print("pi=%.*f"%(3,pi))#用*从后面的元组中读取字段宽度或精度print('%010.3f'%pi)#用0填充空白print('%-10.3f'%pi)#左对齐print('%+f'%pi)#显示正负号forxinrange(0,10):
print(x)#不换行输出
print()函数的运行结果如图4.24所示。4.4常用函数2join()函数与split()函数
如果有一个字符串列表,需要将它们连接起来,成为一个独立的字符串,join()函数就很有用。join()函数在一个字符串上调用,其参数是一个字符串列表,返回一个字符串。返回的字符串由传入的列表中每个字符串连接而成。与join()函数相反的是split()函数,它针对一个字符串调用,返回一个字符串列表。【示例4.14】join()函数与split()函数的用法示例。(1)使用join()函数,将不同元素组合在一起,代码如下:habits=['游泳','跑步','阅读','骑车']habits_str='、'.join(habits)print('我的爱好是:'+habits_str)4.4常用函数2join()函数与split()函数运行该代码,输出结果如图4.25所示。
【说明】join()函数是针对一个字符串而调用的,并且传入一个列表值,使用join()函数的字符串被插入到列表参数中每个元素的中间。4.4常用函数2join()函数与split()函数
(2)使用split()函数,将字符串切分成不同的部分,然后放入一个列表中,代码如下:sentence="我的爱好是:游泳、跑步、阅读、骑车"front,end=sentence.split(':')habit=end.split('、')print(habit)运行该代码,输出结果如图4.26所示。
【说明】在上述代码中,通过两次使用split()函数将“爱好”切分出来并放置在同一个列表中。split()函数在数据分析与爬虫中使用得非常多,应着重掌握。4.4常用函数3enumerate()函数和zip()函数
在Python中,enumerate()函数与zip()函数是两个常用的函数,它们的功能都是将两个列表组合在一起,经常将组合后的结果放置在一个字典中,方便后续处理。1.enumerate()函数
该函数在字面上是枚举、列举的意思,用于将一个可遍历的数据对象(如列表、元组或字符串等)组合成一个索引序列,同时列出数据和数据下标,一般用在for循环当中,可以同时得到数据对象的值及对应的索引值,详情见示例4.15。
【示例4.15】将列表中的所有元素与其对应的索引值组成键值对放入一个字典内,打印字典的内容。habits=['游泳','跑步','阅读','骑车']my_dict={}fori,habitinenumerate(habits):
my_dict.setdefault(i,habit)print(my_dict)4.4常用函数3enumerate()函数和zip()函数运行该代码,输出结果如图4.27所示。
从输出结果可知,使用enumerate()函数将原有列表中的各元素与对应的索引组合在了一起,最后放入字典中,在后续的业务逻辑中,可以多样地处理各自元素。4.4常用函数3enumerate()函数和zip()函数2.zip()函数
该函数用于将多个可迭代对象作为参数,依次将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,与enumerate()函数一样,一般也用在for循环中,详情见示例4.16。
【示例4.16】处理三个列表,将它们的内容放在一个字典内。其中第一个列表作为键,后两个列表将内容拼接作为值。names=['张三','李四','王五','赵六']sexs=['男','女','男','女']habits=['游泳','跑步','阅读','骑车']new_dict={}forname,sex,habitinzip(names,sexs,habits):
new_dict.setdefault(name,sex+','+habit)print(new_dict)4.4常用函数3enumerate()函数和zip()函数运行该代码,输出结果如图4.28所示。从输出结果可知,通过zip()函数实现了多列表的组合。4.4常用函数4lambda匿名函数
lambda是Python编程语言中使用频率较高的一个关键字。lambda是Python预留的关键字,它的语法如下所示。lambdaargument_list:expression
这里的argument_list是参数列表,它的结构与Python中函数(Function)的参数列表是一样的。expression是一个关于参数的表达式。表达式中出现的参数需要在argument_list中有定义,并且表达式只能是单行的。
lambda函数有以下三个特性:
(1)lambda函数是匿名的。所谓匿名函数,通俗地说就是没有名字的函数。
(2)lambda函数有输入和输出。输入的是传入参数列表argument_list的值,输出的是根据表达式expression计算得到的值。
(3)lambda函数一般功能简单。单行expression决定了lambda函数不可能完成复杂的逻辑,只能完成非常简单的功能。由于其实现的功能一目了然,甚至不需要专门的名字来说明。4.4常用函数4lambda匿名函数
由于lambda语法是固定的,其本质上只有一种用法,那就是定义一个lambda函数。在实际中,根据lambda函数应用场景的不同,可以将lambda函数的用法扩展为以下4种,分别是:
(1)将lambda函数赋值给一个变量,通过这个变量间接调用lambda函数。
(2)将lambda函数赋值给其他函数,从而将其他函数用该lambda函数替换。
(3)将lambda函数作为其他函数的返回值,返回给调用者。
(4)将lam
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 养老院老人入住接待制度
- 养老院环境卫生与绿化制度
- 《个性设计模板》课件
- 《目标市场定位分析》课件
- 2024年度外聘讲师知识产权保护与收益分配合同3篇
- 2024年生态修复项目育林施工协议模板版B版
- 脑卒中康复治疗方案
- 2024年版:戴悦与周日的特许经营合同
- 2025年莆田货运考试
- 2025年焦作货运资格证模拟考试题
- 介绍扬州英文版课件
- XX市XX医院无痛医院建设方案
- 新能源材料与器件PPT完整全套教学课件
- 张艺谋电影《活着》影评分析与课件展示
- 考后心态调整主题班会
- 东北育才中学2024年高二上数学期末经典试题含解析
- 2023年公需科目考试试题及答案
- 年产1w吨生物柴油工厂设计-毕业(论文)设计
- 谈谈青年大学生在中国式现代化征程上的使命与担当范文(6篇)
- DB13-T 5660-2023 水文水井分层抽水技术规范
- 二年级上册综合实践测试卷
评论
0/150
提交评论