版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Python程序设计基础教程
第5章元组、字典、集合提纲元组的概念与定义元组的操作字典的概念与定义字典的操作集合的概念与定义集合的操作学习目标了解元组、字典、以及集合的概念掌握元组、字典、以及集合的定义方式学会元组、字典、以及集合的相关操作学会在实例中使用元组、字典、以及集合5.1元组的概念与定义5.1
元组的概念与定义元组和列表类似,但元组属于不可变序列。这里的“不可变”意味着元组一旦创建,一般都不可以修改元组中的元素。元组的的优点:元组的速度一般比列表更快。对不需要改变的数据可以起到保护作用。n元组与空元组元组的定义通常是将所有元素放在一对圆括号"("和")"中,元组定义的示例代码如下:>>>aTuple=('a','b','c')>>>type(aTuple)<class'tuple'>>>>aTuple('a','b','c')也可以创建一个不包含任何元素的空元组。相应的示例代码如下:>>>bTuple=()>>>type(bTuple)<class'tuple'>>>>bTuple()5.1
元组的概念与定义如果创建只有一个元素的元组,需要在元素后面加上一个逗号“,”。相应的示例代码如下:>>>cTuple=('a',)>>>type(cTuple)<class'tuple'>>>>cTuple('a',)>>>dTuple=('a')>>>type(dTuple)<class'str'>>>>dTuple'a'5.1
元组的概念与定义如果在不引起歧义的情况下,也可以在元组定义中将括号省略。例如:>>> eTuple='a','b','c'type(eTuple)<class'tuple'>>>>eTuple('a','b','c')>>>fTuple='a',>>>type(fTuple)<class'tuple'>>>>fTuple('a',)5.1
元组的概念与定义5.2元组的操作5.2
元组的操作元组的创建访问元组中的元素元组的删除元组的其他操作5.2.1元组的创建5.2.1元组的创建元组的创建可以通过在定义元组时,通过按照先后顺序列举元组中的元素的方式来创建元组。相应的示例代码如下:>>>gTuple=(1,'a',2.3)>>>type(gTuple)<class'tuple'>>>>gTuple(1,'a',2.3)>>>>>>type(gTuple[0])<class'int'>>>>type(gTuple[1])<class'str'>>>>type(gTuple[2])<class'float'>5.2.1元组的创建在创建元组时,还可以通过使用tuple()函数将其他序列转换为元组或者创建一个空的元组。相应的示例代码如下:>>>str1='abcde'>>>type(str1)<class'str'>>>>str1'abcde'>>>hTuple=tuple(str1)>>>type(hTuple)<class'tuple'>>>>hTuple('a','b','c','d','e')>>>list1=[1,2,3]>>>type(list1)<class'list'>>>>list1[1,2,3]>>>iTuple=tuple(list1)>>>type(iTuple)<class'tuple'>>>>iTuple(1,2,3)>>>jTuple=tuple()>>>type(jTuple)<class'tuple'>>>>jTuple()5.2.2元组的访问5.2.2元组的访问首先,可以通过下标访问元组中的某个元素,相应的示例代码如下:>>>kTuple=(1,2,3,4,5,6)>>>kTuple(1,2,3,4,5,6)>>>kTuple[0]1>>>kTuple[-1]65.2.2元组的访问也可以通过切片来访问元组中的多个元素,相应的示例代码如下:>>>kTuple=(1,2,3,4,5,6)>>>kTuple(1,2,3,4,5,6)>>>kTuple[1:3](2,3)>>>kTuple[0:5:2](1,3,5)>>>kTuple[-1::-1](6,5,4,3,2,1)5.2.2元组的访问虽然元组属于不可变序列,但是元组的元素所对应的可变对象是可以修改的。相应的示例代码如下:>>>kTuple=(1,2,[3,4,5])>>>kTuple[2]=[3,4,3]Traceback(mostrecentcalllast):File"<pyshell#50>",line1,in<module>kTuple[2]=[3,4,3]TypeError:'tuple'objectdoesnotsupportitemassignment>>>kTuple[2][2]=3>>>kTuple(1,2,[3,4,3])5.2.3元组的删除5.2.3元组的删除由于元组属于不可变序列,一般不能从元组中删除元素,无法对元组中的元素直接进行del操作。相应的示例代码如下:>>>kTuple=(1,2,3)>>>delkTuple[1]Traceback(mostrecentcalllast):File"<pyshell#7>",line1,in<module>delkTuple[1]TypeError:'tuple'objectdoesn'tsupportitemdeletion5.2.3元组的删除可以使用del删除元组对象本身。相应的示例代码如下:>>>kTuple=(1,2,3)>>>type(kTuple)<class'tuple'>>>>delkTuple>>>kTupleTraceback(mostrecentcalllast):File"<pyshell#12>",line1,in<module>kTupleNameError:name'kTuple'isnotdefined5.2.4元组的其他操作5.2.4元组的其他操作在元组中还支持与其他的一些基本操作,例如,分别对应连接和重复的“+”和“*”,相应的示例代码如下:>>>t1=(1,2,3)>>>t2=('a','b')>>>t3=t1+t2>>>t3(1,2,3,'a','b')>>>t4=t2*2>>>t4('a','b','a','b')>>>5.2.4元组的其他操作在元组中,还支持诸如in、notin的成员关系操作,其返回值为True或False,相应的示例代码如下:>>>t5=(1,2,3)>>>1int5True>>>5notint5True>>>6int5False5.2.4元组的其他操作在元组中,还支持比较运算,包括:<,<=,==,!=,>=,>等,其返回值为True或False,可以实现对元组中相应元素的比较,相应的示例代码如下:>>>t5=(1,2,3)>>>t6=(1,3,3)>>>t5<t6True>>>t7=(1,2)>>>t8=(2,1)>>>t7==t8False5.2.4元组的其他操作在元组中,可以通过count(value)方法来获取元组中的某个特定元素value出现的次数,以及可以通过index(value,[start,[stop]])方法来获取元组中的某个特定元素value在指定范围第一次出现的下标,若找不到value时,则抛异常ValueError。相应的示例代码如下:>>>t9=(1,2,1,2,2)>>>t9.count(2)3>>>t9.index(1,1,3)2>>>t9.index(3)Traceback(mostrecentcalllast):File"<pyshell#88>",line1,in<module>t9.index(3)ValueError:tuple.index(x):xnotintuple5.2.4元组的其他操作在元组中,还支持一些常见的内置函数,例如:sorted()、len()、max()、min()、sum()等。相应的示例代码如下:>>>t10=(1,2,5,6,3)>>>sorted(t10)[1,2,3,5,6]>>>len(t10)5>>>max(t10)6>>>min(t10)1>>>sum(t10)
175.2.4元组的其他操作>>>fortinenumerate(t10):print(t)(0,1)(1,2)(2,5)(3,6)(4,3)>>>t11=('a','b','c','d','e')>>>forttinzip(t10,t11):print(tt)(1,'a')(2,'b')(5,'c')(6,'d')(3,'e')在使用enumerate(iterable)时,会返回枚举对象,每次返回包含下标和值的元组;在使用zip(iter1,iter2,……)时,返回zip对象,每次返回各个可迭代对象中对应的相同位置的各个元素组成的元组。5.3字典的概念与定义5.3字典的概念与定义Python中的字典是包含“键-值对”作为其元素的序列数据类型。因为字典给出了键和值之间的映射关系,所以也将字典类型称为映射(mapping)类型。在一个字典的数据对象中,它的每个元素包含两部分:键(Key)和值(Value)。在一个字典的数据对象中,它的键是不允许重复的。字典的键可以是任意不可变的数据对象,比如,整数、实数、复数、字符串、以及元组等。对于一个字典的数据对象来说,并不要求这个字典中的不同元素的键为同一种类型。可变的数据对象(比如,列表等)是不能作为一个字典的键的。5.3字典的概念与定义通常认为Python中的字典是无序的序列。这里是指字典中的“键-值对”元素不是按照字典的键的大小顺序来排列的,所以显得字典中的“键-值对”元素的出现顺序是无序的。在程序设计语言的内部实现中,字典中的“键-值对”元素一般是按照“键”的特定内设的哈希函数值的顺序来排列的。在字典中的“值”可以是任何数据对象,包括列表等可变的数据对象。一个字典中的每个键对应着一个值,组成“键-值对”形式的字典元素。类似在日常生活的查字典一样,可以通过“键”查询到其对应的值。在定义一个字典时,通常是将相应的“键-值对”元素放在一对花括号"{"和"}"中,每个“键-值对”元素用以冒号分隔的Key:Value的形式表示。不同“键-值对”元素之间用逗号分隔。相应的形式如下:{Key1:Value1,Key2:Value2,……,KeyN:ValueN}。5.3字典的概念与定义下面给出了一个字典数据对象d1的定义的示例代码:>>>d1={1:'One',2:'Two',3:'Three'}>>>type(d1)<class'dict'>>>>d1{1:'One',2:'Two',3:'Three'}也可以创建一个不包含任何元素的空字典。相应的示例代码如下:>>>d2={}>>>type(d2)<class'dict'>>>>d2{}5.3字典的概念与定义在字典的定义中,允许出现嵌套的字典形式。相应的示例代码如下:>>>d3={'Name':'Wang','Sex':'male','Address':{'City':'Shanghai','Zipcode':'200433'}}>>>type(d3)<class'dict'>>>>d3{'Name':'Wang','Sex':'male','Address':{'City':'Shanghai','Zipcode':'200433'}}5.4字典的操作5.4字典的操作字典的创建字典的读取字典的添加与修改字典的删除字典的其他操作5.4.1字典的创建5.4.1字典的创建字典的创建可以通过在定义字典时,通过列举字典中的“键-值对”形式的元素的方式来创建字典。相应的示例代码如下:>>>d4={1:'One','Two':2,3.0:3}>>>type(d4)<class'dict'>>>>d4{1:'One','Two':2,3.0:3}5.4.1字典的创建在创建字典时,还可以通过使用dict()函数来创建一个字典的数据对象,相应的形式如下:5.4.1字典的创建还可以通过字典的fromkeys方法来创建新字典,具体的形式为:
dict.fromkeys(iterable,value=None)。这样所得到的新字典的每个元素的键来自于iterable对象,而相应的值被设置为value,缺省为None。相应的示例代码如下:>>>dict1=dict.fromkeys(['name','age','sex'])>>>type(dict1)<class'dict'>>>>dict1{'name':None,'age':None,'sex':None}>>>>>>dict2=dict.fromkeys(range(3),1)>>>dict2{0:1,1:1,2:1}5.4.1字典的创建还可以通过字典的copy()方法来创建对原字典浅拷贝(shallowcopy)的新字典,相应的示例代码如下:>>>dict1={'name':None,'age':None,'sex':None}>>>dict2=dict1.copy()>>>dict2{'name':None,'age':None,'sex':None}5.4.2字典的读取5.4.2字典的读取可以通过以键作为下标来访问字典元素,若键不存在则抛出异常KeyError。相应的示例代码如下:>>>dict1={'name':'Wang','age':37}>>>dict1{'name':'Wang','age':37}>>>dict1['name']'Wang'>>>dict1['address']Traceback(mostrecentcalllast):File"<pyshell#185>",line1,in<module>dict1['address']KeyError:'address'5.4.2字典的读取也可以通过字典的get()方法来读取字典中的元素,具体形式是:dict.get(key,default=None)如果字典dict中存在键key,则返回键key对应的value;如果key不存在时,则返回default,default的缺省值为None。相应的示例代码如下:>>>dict1={'name':'Wang','age':37}>>>dict1{'name':'Wang','age':37}>>>print(dict1.get('age'))37>>>print(dict1.get('address'))None>>>print(dict1.get('address','Shanghai'))Shanghai5.4.2字典的读取可以通过字典的keys()方法来分别读取字典中的所有“键-值对”的键,values()方法来分别读取字典中的所有“键-值对”的值,以及items()方法来分别读取字典中的所有“键-值对”。还可以通过迭代器获得一个字典中的所有键。5.4.3字典的添加与修改5.4.3字典的添加与修改当以指定键为下标为字典赋值时,若键存在,则可以修改字典中相应“键-值对”所对应的值;若键不存在,则表示在字典中添加一个新的相应“键-值对”。相应的示例代码如下:>>>dict1={'name':'Wang','age':37}>>>dict1{'name':'Wang','age':37}>>>dict1['address']='Shanghai'>>>dict1{'name':'Wang','age':37,'address':'Shanghai'}>>>>>>dict1['age']=40>>>dict1{'name':'Wang','age':40,'address':'Shanghai'}5.4.3字典的添加与修改可以使用字典的update()方法将另一个字典的“键-值对”或者一个可迭代对象中的信息添加到当前字典对象或更新已有的相应“键-值对”。还可以使用字典的setdefault()方法向字典中添加新的“键-值对”。具体形式是:dict.setdefault(key,default=None)如果字典dict中不存在键key,则向字典dict中插入新的“键-值对”,其键为key,值为default(缺省None);如果字典dict中存在键key时,则不做更新。该方法同时还返回字典中与key相对应的值。5.4.4字典的删除5.4.4字典的删除在Python中,可以使用del来删除一个字典中的指定元素,相应的示例代码如下:>>>dict1={'a':1,'b':2,'c':3}>>>dict1{'a':1,'b':2,'c':3}>>>deldict1['a']>>>dict1{'b':2,'c':3}>>>>>>deldict1['d']Traceback(mostrecentcalllast):File"<pyshell#167>",line1,in<module>deldict1['d']KeyError:'d'也可以使用del删除字典对象本身。5.4.4字典的删除使用字典的clear()方法,可以清除字典中的所有元素,将其设置为一个空字典。字典的pop()和popitem()方法也可以起到删除字典中的元素并返回相应值的功能。5.4.5字典的其他操作5.4.5字典的其他操作在字典中,还支持诸如in、notin的成员关系操作,其返回值为True或False,相应的示例代码如下:>>>dict1={'name':'Wang','age':37,'address':'Shanghai'}>>>'name'indict1True>>>'Name'indict1False>>>'Name'notindict1True注意,对于字符串形式的字典的键来说,是区分大小写字母的。5.4.5字典的其他操作
字典也可以支持一些常见的内置函数,例如:sorted()、len()、max()、min()等。一般来说,其实质上是对字典的键进行相应的操作。具体的示例代码如下:>>>dict1={'name':'Wang','age':37,'address':'Shanghai'}>>>sorted(dict1)['address','age','name']>>>len(dict1)3>>>max(dict1)'name'>>>min(dict1)'address'5.4.5字典的其他操作此外,还可以利用字典的键的不重复特性,可以方便地去除列表中的重复元素。相应的示例代码如下:>>>list1=[2,2,3,2,1]>>>list1[2,2,3,2,1]>>>d1=dict.fromkeys(list1)>>>list2=list(d1.keys())>>>list2[2,3,1]5.5集合的概念与定义5.5集合的概念与定义在Python中的集合一般由若干个元素组成。空的集合,即没有任何元素的集合,也是允许的。通常认为集合属于无序且可变的数据类型。集合的无序是指:当考虑两个集合是否相等时,不需要考虑元素出现在集合中的顺序。集合的可变是指:允许通过向集合中添加新的元素、从集合中删除已有元素等方式对集合进行相应的修改。5.5集合的概念与定义可以通过枚举集合元素的方式来定义相应的集合。具体来说,在定义一个集合时,可以将相应的元素放在一对花括号"{"和"}"中,不同元素之间用逗号分隔。下面给出了一个集合数据对象s1的定义的示例代码:>>>s1={1,2,3}>>>s1{1,2,3}>>>type(s1)<class'set'>>>>>>>s2={1,2,3,2}>>>s2{1,2,3}Python集合的另一个特点是:一个集合中的元素不重复。在定义集合时可以包含重复的数据对象,但在集合的定义中只会保留一个。5.5集合的概念与定义集合中的元素必须是可哈希的对象,因此集合的元素不能是可变对象。在集合的定义中,允许不同类型的元素出现在同一个集合中。相应的示例代码如下:>>>s1={1,2,3,'abc',3.5}>>>type(s1)<class'set'>>>>s1{1,2,3.5,3,'abc'}Python的集合不允许嵌套定义,即一个集合不能作为另外一个集合的元素,否则会引起TypeError。注意:由于字典和集合都是用一对花括号"{"和"}"来作为界定符号,因此“abc={}”定义的是一个空字典对象abc,而不是一个空集合。5.6集合的操作5.6
集合的操作集合的创建集合的运算集合的更改集合的删除集合的其他操作5.6.1集合的创建5.6.1集合的创建集合的创建可以通过在定义集合时,通过列举集合中的元素的方式来创建集合。相应的示例代码如下:>>>s1={1,'abc',3.5,(1,2),1.0}>>>type(s1)<class'set'>>>>s1{(1,2),1,3.5,'abc'}5.6.1集合的创建也可以通过使用set()函数来创建一个集合对象。当set()函数不带参数时,可以创建一个不包含任何元素的空元素。示例代码如下:
>>>s1=set()>>>type(s1)<class'set'>>>>s1set()5.6.1集合的创建在使用set()函数来创建一个集合对象时,可通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 室间隔完整型肺动脉闭锁的遗传咨询与基因检测
- 《爸爸的花儿落了》课件
- 任务2.3 跨境电商市场趋势与潜力分析
- 教学材料《工程图》-第3章 平面
- 《自动驾驶》课件 第3章自动驾驶感知与定位系统
- 后循环缺血护理中的健康教育
- 社区护理学社区护理模式课件
- 2026年社区老党员活动方案策划
- 2026年食品安全标准与监测
- 光明区2025年4月广东深圳市光明区文化广电旅游体育局招聘一般类岗位专干2人笔试历年参考题库典型考点附带答案详解
- 2025中国网安(含中国电科三十所)校园招聘200人笔试历年备考题库附带答案详解
- 揭阳市惠来县卫生健康事业单位招聘笔试真题2025
- 建筑施工项目安全管理手册2024
- 2026版《药物临床试验质量管理规范》GCP考试题库(含标准答案+解析)
- 新版2026年(全国一卷)高考英语阅读理解D篇 真题解读+答题技巧+变式练习(解析版)
- 癫痫诊疗指南(2025年版)
- 2026年全国标准化知识竞赛试题库(含答案)
- 2026年公文写作考试题库(含答案)
- 2026年困境青少年帮扶救助工作方案
- 合作社安全防火责任制度
- 心电图与未来心脏病防治
评论
0/150
提交评论