组合数据类型课件.pptx
- 【下载声明】
1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
3. 本页资料《组合数据类型课件.pptx》由用户(三亚风情)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 组合 数据类型 课件
- 资源描述:
-
1、2022-8-15第第3章章 组合数据类型组合数据类型主 讲 人:第1页,共93页。目录目录2022-8-1521.列表2.元组3.字典4.集合5.组合数据类型的高级特性第2页,共93页。2022-8-151.列表 Python内置的一种数据类型是列表(list)。list是一种最具灵活性的有序集合对象类型,可以随时添加和删除其中的元素。第3页,共93页。2022-8-151.列表1.1创建列表通常使用左右方括号(即:和)将数据元素包裹起来创建一个列表,如下所示。其中列表list1中包含5个元素,分别是1、2、3、4、5,list1为列表名。这种创建列表的方式适用于对于列表中元素个数及其数值已
2、知时。List1=1,2,3,4,5 List2=a,b,c,d第4页,共93页。2022-8-151.列表1.1创建列表当遇到如将一个元组(参考3.2节)转换为列表时,则需要使用另外一种方法创建列表调用list(tuple)函数,该函数返回一个包含tuple中所有元素的列表。注:直接调用不带参的list()函数时,将返回一个空列表,即:。第5页,共93页。2022-8-151.列表1.1创建列表列表中的元素的数据类型可以各不相同,如int,string类型,甚至可以是一个列表类型,如在下例中10,20为一个list类型,它作为list3的一个元素存在于list3中。List3=marry,2
3、.0,5,10,20 List3marry,2.0,5,10,20第6页,共93页。2022-8-151.列表1.1创建列表如图3-1所示,列表的下标是从0开 始,L i s t 3列 表 的 第 一 个 元 素 是marry,用L0可以表示L的第一个元素,第二个元素是2.0,用L1表示,以此类推,第四个元素是一个列表,即10,20。图3-1 元组索引位置第7页,共93页。2022-8-151.列表1.2读取元素元素下标表示该元素在list中的位置。注意list中元素下标是从0开始的,如第n个元素下标为n-1。但当读取元素传入的元素下标超出list集合的大小时将会报“元素下标超出范围”的错误。
4、第8页,共93页。2022-8-151.列表1.2读取元素 List2=a,b,c,d List20#访问列表的第一个元素a List21#访问列表的第二个元素b List25#超出列表元素下标,报错Traceback(most recent call last):File,line 1,in List25IndexError:list index out of range由于list2的长度为4,在 取 第5个 元 素 时,list2中元素的最大下标为3 List2-1d List2-2c List2-3b List2-5#超出列表元素下标,报错Traceback(most recent c
5、all last):File,line 1,in List2-5IndexError:list index out of range除了正向取list中的元素外,也可以逆向去取,用元素下标-1表示最后一个元素,-2表示倒数第二个元素,同样注意不能超出元组个数的界限,例如:。第10页,共93页。2022-8-151.列表1.3遍历列表 for cheese in cheeses:print(cheese)遍历一个列表元素的最常见方式是使用for循环,常见的有以下两种方式。第一种遍历方法隐藏了列表cheeses的长度,操作较为便利。第11页,共93页。2022-8-151.列表1.3遍历列表 fo
6、r i in range(len(numbers):numbersi=numbersi*2第二种遍历方法则使用len()函数计算出列表numbers的长度后进行遍历操作,其中range()函数返回的是从0到numbers长度的数值序列。第12页,共93页。2022-8-151.列表1.4替换元素 numbers=12,13 numbers1=14 numbers 12,14 和字符串不同的是,列表是可变的,可以在列表中指定下标的值对元素进行修改,例如:numbers1原先为13,当执行 numbers1=14 时,numbers1的值被修改为14。第13页,共93页。2022-8-151.列表
7、1.5增加元素 list=1 list=list+a,b list1,a,b*操作符重复一个列表多次:0*50,0,0,0,0 4,5,6*44,5,6,4,5,6,4,5,6,4,5,6方法一:使用“+”将一个新列表附加在原列表的尾部。例如:和字符串不同的是,列表是可变的,可以在列表中指定下标的值对元素进行修改,例如:第14页,共93页。2022-8-151.列表1.5增加元素 list.append(True)list1,a,b,True方法二:使用append()方法向列表的尾部添加一个新元素。例如:list.extend(c,5)list1,a,b,True,c,5方法三:使用exte
8、nd()方法将一个列表添加在原列表的尾部。例如:第15页,共93页。2022-8-151.列表1.5增加元素 list.insert(0,x)listx,1,a,b,True,c,5方法四:使用insert()方法将一个元素插入到列表的指定位置。该方法有两个参数,第一个参数为插入位置,第二个参数为插入元素。例如:第16页,共93页。2022-8-151.列表1.6检索元素 list=x,y,a,b,True,x list.count(x)2 使用count()方法计算列表中某个元素出现的次数。3 in listFalse x in listTrue使用in运算符检查某个元素是否在列表中。第17
9、页,共93页。2022-8-151.列表1.6检索元素使用index()方法返回某个元素在列表中的准确位置,若该元素不在列表中将会出错。值得注意的是,若使用该方法的元素在该列表中存在相同项,则返回显示最小index的位置,如list.index(x),存在两个x,则只显示最小位置。list.index(x)0第18页,共93页。1.列表1.7删除元素方法一:使用del语句删除某个特定位置的元素。list=x,y,a,b,True,x del list1 listx,a,b,True,x第19页,共93页。1.列表1.7删除元素方法二:使用remove()方法删除某个特定值的元素。remove(
10、x)从list中移除最左边出现的数据项x,如果找不到x就产生ValueError。list=x,y,a,b,True,x list.remove(x)listy,a,b,True,x list.remove(x)listy,a,b,True list.remove(x)Traceback(most recent call last):File,line 1,in list.remove(x)ValueError:list.remove(x):x not in list第20页,共93页。1.列表1.7删除元素方法三:使用pop()方法来弹出(删除)指定位置的元素,缺省参数时弹出最后一个元素。弹
11、出空数组将会报错。list=x,y,a,b,True,x list.pop()x listx,y,a,b,True list.pop(1)y listx,a,b,True list.pop(1)a第21页,共93页。1.列表1.7删除元素 list.pop(1)b list.pop(1)True list.pop()x list list.pop()Traceback(most recent call last):File,line 1,in list.pop()IndexError:pop from empty list接上一页PPT第22页,共93页。1.列表1.8字符串和列表的转化 s=
12、Micheal t=list(s)tM,i,c,h,e,a,l字符串是字符的序列,而列表是值的序列,但字符的列表和字符串并不相同。若要将一个字符串转化为一个字符的列表,可以使用函数list。第23页,共93页。1.列表1.8字符串和列表的转化 s=you are so beautiful t=s.split()tyou,are,so,beautiful由于list是内置函数的名称,所以应当尽量避免使用它作为变量名称。list函数会将字符串拆成单个的字母。如果想要将字符串拆成单词,可以使用split方法。第24页,共93页。1.列表1.8字符串和列表的转化 u=www.studyP d=u.sp
13、lit()dwww.studyP但是下面的例子却失败了,输出了整个列表。u=www.studyP c=u.split(.)cwww,studyPython,com,cn这时候就要用split接受一个可选的形参,作为分隔符,用于指定用哪个字符来分割单词。例如上面的例子可以用一个“.”作为分隔符,如下所示。第25页,共93页。1.列表1.8字符串和列表的转化join是split的逆操作。它接收字符串列表,并拼接每个元素。join是字符串的方法,所以必须在分隔符上调用它,并传入列表作为实参。t=you,are,so,beautifil s=.join(t)syou are so beautifil第
14、26页,共93页。1.列表1.8列表的常用函数cmp()格式格式:cmp(列表1,列表2)。功能功能:对两个列表进行比较,若第一个列表大于第二个,则结果为1,相反则为-1,元素完全相同则结果为0。list1=123,xyz list2=123,abc cmp(list1,list2)1 cmp(list2,list1)-1 list2=list1 cmp(list1,list2)0第27页,共93页。1.列表1.8列表的常用函数len()格式格式:len(列表)。功能功能:返回列表中的元素个数。len(list1)2第28页,共93页。1.列表1.8列表的常用函数max()和和min()格式格
15、式:max(列表)min(列表)。功能功能:返回列表中的最大或最小元素。str_l=abc,xyz,123 num_l=123,456,222 max(str_l)xyz min(str_l)123 max(num_l)456 min(num_l)123第29页,共93页。1.列表1.8列表的常用函数sorted()和和resersed()格式格式:sorted(列表)reversed(列表)。功能功能:前者的功能是对列表进行排序,默认是按升序排序,还可在列表的后面增加一个reverse参数,其等于True则表示按降序排序;后者的功能是对列表进行逆序。list=1,4,3,6,9,0,2 fo
16、r x in reversed(list):print x,2 0 9 6 3 4 1 sorted(list)0,1,2,3,4,6,9 sorted(list,reverse=True)9,6,4,3,2,1,0第30页,共93页。1.列表1.8列表的常用函数sum()格式:格式:sum(列表)。功能:功能:对数值型列表的元素进行求和运算,对非数值型列表运算则出错。sum(list)25 sum(str_l)Traceback(most recent call last):File,line 1,in sum(str_l)TypeError:unsupported operand type
17、(s)for+:int and str第31页,共93页。目录目录2022-8-1521.列表2.元组3.字典4.集合5.组合数据类型的高级特性第32页,共93页。2.元组元组(tuple)是值的一个序列。其中的值可以是任何类型,并且按照整数下标索引,与列表类似。但元组中的元素不能修改,列表中的元素可以修改。第33页,共93页。2.元组2.1元组与列表的区别元组基本上都是不可改变的列表。元组几乎具有列表所有的特性,除开那些违反不变性的特征。也就是说,没有函数和方法可以改变元组。不可变的不可变的tupletuple有什么意义?有什么意义?因为tuple不可变,所以代码更安全。如果可能,能用tup
18、le代替list就尽量用tuple。当后续介绍字典类型时,会发现字典的键必须是不可变的,因此元组可以用作字典的键,但列表不能。第34页,共93页。2.元组2.1元组与列表的区别语法上,元组就是用逗号分隔的一列值,使用“=”将元组赋给变量。tuple1=a,1,boy虽然并不必需,但元组常常用括号括起来。tuple1=(a,1,boy)tuple1(a,1,boy)第35页,共93页。2.元组2.1元组与列表的区别新建元组的另一种形式是使用内置函数tuple。不带参数时,它会新建一个空元组。t=tuple()t()第36页,共93页。2.元组2.1元组与列表的区别则定义的不是tuple,是1这个
19、数!这是因为括号()既可以表示tuple,又可以表示数学公式中的小括号,这就产生了歧义。因此,Python规定,这种情况下,按小括号进行计算,计算结果自然是1。所以,只有一个元素的tuple定义时必须加一个逗号“,”来消除歧义,即:t=(1,)t(1,)但是,要定义一个只有一个元素的tuple,例如:t=(1)t1第37页,共93页。2.元组2.1元组与列表的区别其他序列(列表和字符串)的操作都可用于元组,除了那些会违反不变性的列表运算符。“+”和“*”运算符同样适用于元组。成员操作(in)和for循环同样适用于元组长度(len)、最大(max)和最小(min)同样适用于元组。没有任何的操作能
20、更改元组。例如append、extend、insert、remove、pop、reverse和sort不能用于元组。第38页,共93页。2.元组2.2元组的常用操作由于元组和列表比较相似,使得对列表的很多操作如“+”、“*”等运算符以及长度(len)、最大(max)、最小(min)等运算都适用于元组。而那些如append、extend、insert、remove、pop、reverse和sort等能改变元素的操作都不能直接操作元组。然而,当元组中存在列表元素项时,就可以使用上述如append等方法修改list中的元素,达到间接修改元组元素的目的。第39页,共93页。2.元组2.3元组的常用函数
21、元组的常用函数与列表类似,除了那些会违反不变性的函数。语 法描 述cmp(tuple1,tuple2)比较两个元组元素len(tuple)计算元组元素个数max(tuple)返回元组中元素最大值min(tuple)返回元组中元素最小值tuple(seq)将列表转换为元组表3-1元组的常用函数第40页,共93页。目录目录2022-8-1521.列表2.元组3.字典4.集合5.组合数据类型的高级特性第41页,共93页。3.字典字典是一种集合,它不是序列。字典可以看成元素对构成的列表,其中一个元素是键,另一个元素是值。在搜索字典时,首先查找键,当查找到键后就可以直接获取该键对应的值,效率很高,是一种
22、高效的查找方法。第42页,共93页。3.字典3.1创建字典与列表、元组不同的是,字典是以“”和“”定义的,而且字典中每个元素包含两个部分,即键和值。下面给出了一些实例,展示了各种语法,这些语法产生的是相同的字典。第43页,共93页。3.字典3.1创建字典 d1=dict(id:19,name:Marry,city:chongqing)d2=dict(id=19,name=Marry,city=chongqing)d3=dict(id,19),(nmae,Marry),(city,chongqing)d4=dict(zip(id,name,city),(19,Marry,chongqing)d5
23、=id:19,name:Marry,city:chongqing d1name:Marry,id:19,city:chongqing d2name:Marry,id:19,city:chongqing d3name:Marry,id:19,city:chongqing d4name:Marry,id:19,city:chongqing d5name:Marry,id:19,city:chongqing第44页,共93页。3.字典3.2查找与反向查找 d1id19 d1nameMarry d1chongqingTraceback(most recent call last):File,line
24、1,in d1chongqingKeyError:chongqing字典定义好后,可以通过键来查找值,这个操作称为“查找”。第45页,共93页。3.字典3.2查找与反向查找 def reverse_lookup(d,v):for k in d:if dk=v:return kraise LookupError()对于字典的操作通常是通过键来查找值,而能不能通过一个给定的值来确定其键呢?由于字典是一对多的关系,即一个键可能对应多个值,若想根据一个值来确定其键时,只能通过暴力搜索的方法。下面给出一个简单的暴力搜索实例,该段代码接收一个值,并返回映射到该值的键:第46页,共93页。3.字典3.3遍历
25、字典 for key in d1.keys():print(key,d1key)name Marryid 19city Chongqing用循环语句来遍历字典中的每个元素的键和值,如下所示:第47页,共93页。3.字典3.4添加和修改字典 d1name=jason d1name:jason,id:19,city:chongqing d1sex=female d1sex:female,name:jason,id:19,city:chongqing字典的大小和列表都是动态的,即不需要事先指定其容量大小,可以随时向字典中添加新的键值对,或者修改现有键所关联的值。添加和修改的方法相同,都是使用“字典变
展开阅读全文