python组合数据类型

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

Python语言程序设计第6章组合数据类型组合数据类型概述序列类型计算机不仅对单个变量表示的数据进行处理,更多情况,计算机需要对一组数据进行批量处理。一些例子包括:给定一组单词{python,data,function,list,loop},计算并输出每个单词的长度;给定一个学院学生信息,统计一下男女生比例;一次实验产生了很多组数据,对这些大量数据进行分析;序列类型组合数据类型能够将多个同类型或不同类型的数据组织起来,通过单一的表示使数据操作更有序更容易。根据数据之间的关系,组合数据类型可以分为三类:序列类型、集合类型和映射类型。序列类型•序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。•集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。•映射类型是“键-值”数据项的组合,每个元素是一个键值对,表示为(key,value)。序列类型序列类型序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。当需要访问序列中某特定值时,只需要通过下标标出即可。1-n0Sii序列类型由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。序列类型支持成员关系操作符(in)、长度计算函数(len())、分片([]),元素本身也可以是序列类型。序列类型Python语言中有很多数据类型都是序列类型,其中比较重要的是:str(字符串)、tuple(元组)和list(列表)。•元组是包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。•列表则是一个可以修改数据项的序列类型,使用也最灵活序列类型Python语言中有很多数据类型都是序列类型,其中比较重要的是:str(字符串)、tuple(元组)和list(列表)。•元组是包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除。•列表则是一个可以修改数据项的序列类型,使用也最灵活序列类型序列类型有12个通用的操作符和函数操作符描述xins如果x是s的元素,返回True,否则返回Falsexnotins如果x不是s的元素,返回True,否则返回Falses+t连接s和ts*n或n*s将序列s复制n次s[i]索引,返回序列的第i个元素s[i:j]分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素)s[i:j:k]步骤分片,返回包含序列s第i到j个元素以j为步数的子序列len(s)序列s的元素个数(长度)min(s)序列s中的最小元素max(s)序列s中的最大元素s.index(x[,i[,j]])序列s中从i开始到j位置中第一次出现元素x的位置s.count(x)序列s中出现x的总次数序列类型元组(tuple)是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况下十分有用。Python中元组采用逗号和圆括号(可选)来表示。creature=cat,dog,tiger,humancreature('cat','dog','tiger','human')color=(red,0x001100,blue,creature)color('red',4352,'blue',('cat','dog','tiger','human'))color[2]'blue'color[-1][2]'tiger'序列类型deffunc(x):#函数多返回值returnx,x**3a,b='dog','tiger'#多变量同步赋值a,b=(b,a)#多变量同步赋值,括号可省略importmathforx,yin((1,0),(2,5),(3,8)):#循环遍历print(math.hypot(x,y))#求多个坐标值到原点的距离集合类型集合类型与数学中集合的概念一致,即包含0个或多个数据项的无序组合。集合中元素不可重复,元素类型只能是固定数据类型,例如:整数、浮点数、字符串、元组等,列表、字典和集合类型本身都是可变数据类型,不能作为集合的元素出现。集合类型由于集合是无序组合,它没有索引和位置的概念,不能分片,集合中元素可以动态增加或删除。集合用大括号({})表示,可以用赋值语句生成一个集合。S={425,BIT,(10,CS),424}S{424,425,(10,'CS'),'BIT'}T={425,BIT,(10,CS),424,425,BIT}T{424,425,(10,'CS'),'BIT'}集合类型由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型能够过滤掉重复元素。set(x)函数可以用于生成集合。W=set(‘apple’){'e','p','a','l'}V=set((cat,dog,tiger,human)){'cat','human','dog','tiger'}集合类型集合类型有10个操作符操作符描述S–T或S.difference(T)返回一个新集合,包括在集合S中但不在集合T中的元素S-=T或S.difference_update(T)更新集合S,包括在集合S中但不在集合T中的元素S&T或S.intersection(T)返回一个新集合,包括同时在集合S和T中的元素S&=T或S.intersection_update(T)更新集合S,包括同时在集合S和T中的元素。S^T或s.symmetric_difference(T)返回一个新集合,包括集合S和T中元素,但不包括同时在其中的元素S=^T或s.symmetric_difference_update(T)更新集合S,包括集合S和T中元素,但不包括同时在其中的元素S|T或S.union(T)返回一个新集合,包括集合S和T中所有元素S=|T或S.update(T)更新集合S,包括集合S和T中所有元素S=T或S.issubset(T)如果S与T相同或S是T的子集,返回True,否则返回False,可以用ST判断S是否是T的真子集S=T或S.issuperset(T)如果S与T相同或S是T的超集,返回True,否则返回False,可以用ST判断S是否是T的真超集集合类型上述操作符表达了集合类型的4种基本操作,交集(&)、并集(|)、差集(-)、补集(^),操作逻辑与数学定义相同集合类型集合类型有10个操作函数或方法函数或方法描述S.add(x)如果数据项x不在集合S中,将x增加到sS.clear()移除S中所有数据项S.copy()返回集合S的一个拷贝S.pop()随机返回集合S中的一个元素,如果S为空,产生KeyError异常S.discard(x)如果x在集合S中,移除该元素;如果x不在,不报错S.remove(x)如果x在集合S中,移除该元素;不在产生KeyError异常S.isdisjoint(T)如果集合S与T没有相同元素,返回Truelen(S)返回集合S元素个数xinS如果x是S的元素,返回True,否则返回FalsexnotinS如果x不是S的元素,返回True,否则返回False集合类型集合类型主要用于三个场景:成员关系测试、元素去重和删除数据项,例子如下。BITin{PYTHON,BIT,123,GOOD}#成员关系测试Truetup=(PYTHON,BIT,123,GOOD,123)#元素去重set(tup){123,'GOOD','BIT','PYTHON'}newtup=tuple(set(tup)–{'PYTHON'})#去重同时删除数据项('GOOD',123,'BIT')集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。映射类型映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(key,value),元素之间是无序的。键值对(key,value)是一种二元关系。在Python中,映射类型主要以字典(dict)体现。6.2列表类型和操作列表类型的概念列表是Python中内置有序可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开;当列表元素增加或删除时,列表对象自动进行扩展或收缩内存,保证元素之间没有缝隙;在Python中,一个列表中的数据类型可以各不相同,可以同时分别为整数、实数、字符串等基本类型,甚至是列表、元组、字典、集合以及其他自定义类型的对象。[10,20,30,40]['crunchyfrog','rambladder','larkvomit']['spam',2.0,5,[10,20]][['file1',200,7],['file2',260,9]]列表类型的概念列表支持成员关系操作符(in)、长度计算函数(len())、分片([])。列表可以同时使用正向递增序号和反向递减序号,可以采用标准的比较操作符(、=、==、!=、=、)进行比较,列表的比较实际上是单个数据项的逐个比较。列表的下标[BIT,3.1415,1024,(2,3),[中国,9]]列表类型的概念列表用中括号([])表示,也可以通过list()函数将元组或字符串转化成列表。直接使用list()函数会返回一个空列表。ls=[425,BIT,[10,CS],425]ls[425,'BIT',[10,'CS'],425]ls[2][-1][0]'C'list((425,BIT,[10,CS],425))[425,'BIT',[10,'CS'],425]list(中国是一个伟大的国家)['中','国','是','一','个','伟','大','的','国','家']list()[]列表类型的概念与整数和字符串不同,列表要处理一组数据,因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象。ls=[425,BIT,1024]#用数据赋值产生列表lslt=ls#lt是ls所对应数据的引用,lt并不包含真实数据ls[0]=0lt[0,'BIT',1024]列表类型的概念列表类型的操作函数或方法描述ls[i]=x替换列表ls第i数据项为xls[i:j]=lt用列表lt替换列表ls中第i到j项数据(不含第j项,下同)ls[i:j:k]=lt用列表lt替换列表ls中第i到j以k为步的数据dells[i:j]删除列表ls第i到j项数据,等价于ls[i:j]=[]dells[i:j:k]删除列表ls第i到j以k为步的数据ls+=lt或ls.extend(lt)将列表lt元素增加到列表ls中ls*=n更新列表ls,其元素重复n次ls.append(x)在列表ls最后增加一个元素xls.clear()删除ls中所有元素ls.copy()生成一个新列表,复制ls中所有元素ls.insert(i,x)在列表ls第i位置增加元素xls.pop(i)将列表ls中第i项元素取出并删除该元素ls.remove(x)将列表中出现的第一个元素x删除ls.reverse(x)列表ls中元素反转列表类型的操作vlist=list(range(5))vlist[0,1,2,3,4]len(vlist[2:])#计算从第3个位置开始到结尾的子串长度32invlist#判断2是否在列表vlist中Truevlist[3]=python#修改序号3的元素值和类型vlist[0,1,2,'python',4]vlist[1:3]=[bit,computer]vlist[0,'bit','computer',“python”,4]列表类型的操作当使用一个列表改变另一个列表值时,Python不要求两个列表长度一样,但遵循“多增少减”的原则,例子如下。vlis

1 / 73
下载文档,编辑使用

©2015-2020 m.111doc.com 三一刀客.

备案号:赣ICP备18015867号-1 客服联系 QQ:2149211541

×
保存成功