




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第5讲组合数据类型(列表、元组)列表元组学习目标本讲要点5.1认识组合数据类型5.1认识组合数据类型常用的序列类型有字符串、列表和元组。Python中的序列支持双向索引:正向递增索引和反向递减索引正向递增索引从左向右依次递增,第一个元素的索引为0,第二个元素的索引为1,以此类推;反向递减索引从右向左依次递减,从右数第一个元素的索引为-1,第二个元素的索引为-2,以此类推。5.1认识组合数据类型序列类型Python集合具备确定性、互异性和无序性三个特性。Python要求放入集合中的元素必须是不可变类型,Python中的整型、浮点型、字符串类型和元组属于不可变类型,列表、字典及集合本身都属于可变的数据类型。5.1认识组合数据类型确定性:给定一个集合,那么任何一个元素是否在集合中就确定了。互异性:集合中的元素互不相同。无序性:集合中的元素没有顺序,顺序不同但元素相同的集合可视为同一集合。集合映射类型以键值对的形式存储元素,键值对中的键与值之间存在映射关系。字典(dict)是Python唯一的内置映射类型,字典的键必须遵守以下两个原则:5.1认识组合数据类型每个键只能对应一个值,不允许同一个键在字典中重复出现。字典中的键是不可变类型。A详细地址省份城市邮政编码519088金凤路6号广东省珠海市B映射类型键-不重复键-不可变5.2列表列表:按照一定线性顺序排列而成的数据项的集合。Python中列表可以存储不同类型的数据。例如:A=[1,'xiaoWang','a',[2,'b']]5.2列表整数字符串列表Python列表的创建方式:(1)直接使用中括号“[]”创建(2)使用内置的函数list()快速创建,如果设置参数,则必须为可迭代对象。5.2.1创建列表li1=[]
#使用[]创建空列表li2=list()
#使用list()创建空列表li3=list(1)
#int类型数据不是可迭代类型,列表创建失败li4=list('python')
#字符串类型是可迭代类型li5=list([1,'python'])
#列表类型是可迭代类型示例可迭代对象:支持通过for…in…语句迭代获取数据的对象。目前,我们学习过可迭代的类型有字符串和列表,后续学习的集合、字典、文件也是可迭代类型的对象。使用isinstance()函数可以判断目标是否为可迭代对象,返回True表示为可迭代对象。fromcollections.abcimportIterablels=[1,2,3]print(isinstance(ls,Iterable))多学一招可迭代对象列表索引:可以正向、逆向索引正向:0~列表长度-1;逆向:-1~-列表长度我们可以通过下标索引的方式来访问列表中的值。
A=['道路自信','理论自信','制度自信','文化自信']print(A[0])print(A[len(A)-1])print(A[-1])print(A[-len(A)])5.2列表列表访问列表中的元素的访问方法:索引、切片、循环遍历。5.2.2访问列表元素li=["Java","C#","Python","PHP"]示例print(li[1])索引print(li[1:3])切片forxinli:print(x,end='')循环列表访问向列表中添加元素:append()、extend()、insert()方法。5.2.3添加列表元素list_one=["Java","C#","Python","PHP"]示例list_one.append("C++")appendlist_one.extend(["Android","IOS",])extendlist_one.insert(2,“HTML")insert在列表末尾添加元素在列表末尾添加另一个序列的所有元素按照索引将元素插入列表的指定位置列表操作列表的排序是将元素按照某种规定进行排列。list常用的排序方法:sort()、reverse(),Python3内置函数sorted()。5.2.4元素排序li1=[6,2,5,3]示例li1.sort()sortli2=sorted(li1)sortedli1.reverse()reverse有序的元素会覆盖原来的列表元素,不产生新列表产生排序后的新列表,排序操作不会对原列表产生影响(对可迭代对象排序)逆置列表,即把原列表中的元素从右至左依次排列存放列表操作list.sort(key=None,reverse=False)——默认的参数状态5.2.4元素排序问题:li1=[6,2,5,3]如何降序排序?删除列表元素的常用方式:del语句、remove()方法、pop()方法和clear()方法。5.2.5删除列表元素li_one=[6,2,5,3,3]示例delli_one[0]delli_one.remove(3)remove删除列表中指定位置的元素移除列表中匹配到的第一个元素li_one.pop()popli_one.clear()clear移除列表中的某个元素,若未指定具体元素时,则移除列表中的最后一个元素清空列表列表操作列表推导式:符合Python语法规则的复合表达式,它用于以简洁的方式根据已有的列表构建满足特定需求的列表。列表推导式的基本格式如下:5.2.6列表推导式[expforxinlist]列表推导式还可以结合if判断语句或for循环嵌套,生成更灵活的列表。带有if语句的列表推导式for循环嵌套的列表推导式带有if语句与for循环嵌套的列表推导式5.2.6列表推导式例:ls=[1,2,3,4,5,6,7,8]ls=[data*datafordatainls]print(ls)结果:[1,4,9,16,25,36,49,64]例:ls=[datafordatainlsifdata>4]print(ls)结果:[9,16,25,36,49,64]例:ls_one=[1,2,3]ls_two=[3,4,5]ls_three=[x+yforxinls_oneforyinls_two]print(ls_three)结果:[4,5,6,5,6,7,6,7,8]5.3元组元组(tuple):是关系数据库中的基本概念,关系是一张表,表中的每行(即数据库中的每条记录)就是一个元组,每列就是一个属性。在二维表里,元组也称为行。Python中元组构建方式:圆括号“()”、内置函数tuple()构建元组。5.3元组t1=() #使用()构建元组t2=tuple() #使用tuple构建元组元组创建当使用圆括号“()”创建元组时,如果元组中只包含一个元素,那么需要在该元素的后面添加逗号,从而保证Python解释器能够识别其为元组类型。5.3元组t1=('python')t2=('python',)print(type(t1))print(type(t2))示例<class'str'><class'tuple'>结果元组创建元组访问:索引、切片、循环遍历。索引可以正向、逆向5.3元组tuple_demo=('p','y','t','h','o','n')示例tuple_demo[2]使用索引tuple_demo[2:5]使用切片foriintuple_demo:print(i)遍历元组元组访问5.4精彩实例为丰富校园文化生活,学校拟组织一场歌手大赛,从参赛选手中选拔出十名相对突出的学生,授予“校园十大歌手”称号。比赛之中设置有评委组,每名选手演唱完毕之后会由评委组的十名评委打分。为保证比赛公平公正,防止作弊和恶意打分,计算得分时会先去掉最高分和最低分,再计算平均分。本实例要求编写程序,实现根据需求计算平均分的功能。5.4.1十大歌手魔方阵又称纵横图,是一种n行n列、由自然数1~n×n组成的方阵,该方阵中的数符合以下规律:1. 方阵中的每个元素都不相等。2. 每行、每列以及主、副对角线上的个元素之和都相等。本实例要求编写程序,输出一个5行5列的魔方阵。5.4.2神奇魔方阵3575.4.2神奇魔方阵采用穷举法?对于n比较大时,计算机也需要很长时间才能找出来。不用穷举法将1,2,...,n^2按照某种规则一次填入到方阵中,得到的恰好是奇数次魔方阵,规则如下:1、将1填入第一行的中间,即(1,(n+1)//2)的位置2、下一个数填在上一个数的主对角线的上方,若上一个数的位置是(i,j),下一个数应该填在(i1,j1),i1=i-1,j1=j-13、若填写的位置下标出界,则出界的值用n来代替,即若i=1=0,则取i1=n,若j-1=0,则取j1=n。4、若应填的位置虽然没有出界,但是已经填有数据的话,则应填在上一个数字的下面(行减1,列不变),即i1=i-1,j1=j。5、这样循环填数,直到把n*n个数全部填入方阵中,最后得到的是一个n阶魔方阵。原文链接:/time_money/article/details/1102452715.4.2神奇魔方阵二维列表的创建与访问创建5*5的二维列表,列表中元素为0:magic=[[0forxinrange(5)]foryinrange(5)]访问:给第3行第2列的元素赋值为21magic[2][1]=215.4.2神奇魔方阵补充:图书信息图书馆购进一批图书,请编写程序,将这批图书的信息录入到计算机中,并且打印输出购书清单,以及总价值。图书信息包括书号、书名、单价、数量。5.9本章小结第5讲组合数据类型2(集合、字典)集合字典学习目标本讲要点5.5集合集合:集合(set)是一个无序的不重复元素序列。Python的集合(set)本身是可变类型,但Python要求放入集合中的元素必须是不可变类型。创建方式:大括号“{}”、内置函数set()5.5集合basket={'苹果','橙子','香蕉','橙子','梨'}#使用{}构建集合print(basket)s2=set([1,2]) #使用set构建集合print(s2)注意:不能使用{}创建空集合({}用于创建空字典),空集合只能利用set()函数创建。5.5集合set_demo1={}set_demo2=set()print(type(set_demo1))print(type(set_demo2))<class'dict'><class'set'>结果示例5.5集合集合的访问访问:集合是无序的,不能使用索引、切片,只能通过for循环遍历方式。例:set1={3,4,5,6}
forxinset1:
print(x,end="")集合是可变的,集合中的元素可以动态增加或删除。Python提供了一些内置方法来操作集合,常见内置方法如下:s.add(x):将元素x添加到集合s中,如果元素已存在,则不进行任何操作s.remove(x):将元素x从集合s中移除,如果元素不存在,则会发生错误。s.discard(x):移除集合中的元素,且如果元素不存在,不会发生错误。x=s.pop():随机删除集合中的一个元素,并返回被删除的元素s.clear():清空集合sset.copy():拷贝一个集合5.5集合集合的操作s1=set([1,2,3]) #传入列表s2=set((2,3,4)) #传入元组s3=set('python') #传入字符串s4=set(range(5)) s1.add('s') #向集合s1中添加元素ss2.remove(3) #删除集合s2中的元素3s3.discard('p') #删除集合s3中的元素px=s4.pop() #随机删除集合s4中的元素,并返回该元素s3.clear() #清空集合s3s5=s2.copy() #拷贝集合s2并赋值给s55.5集合集合推导式:集合推导式的格式与列表推导式相似,区别在于集合推导式外侧为大括号“{}”具体如下:5.5集合{expforxinsetifcond}5.6字典字典:字典的每个键值key=>value对用冒号:
分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}
中。创建:
{}、内置函数dict()格式:d={key1:value1,key2:value2,key3:value3}5.6.1创建字典d1={'A':123,12:'python'} #使用{}构建集合d2=dict({'A':'123','B':'135'})#使用dict构建元组注意:(1)字典元素无序;(2)键唯一(值则不必);(3)键必须是不可变类型,如字符串、数字(值数据类型不限)。5.6.1创建字典(1)字典元素无序,不能用索引、切片方式访问(2)循环遍历可以访问字典中的“键”(3)通过“dict[键]”形式可以访问键对应的值(4)通过内置方法dict.get(键)访问对应的值5.6.2字典的访问dict1={'name':'张三','country':'China','score':95}forxindict1:print(x,end=',')#输出字典中的键
print(f'{x}={dict1[x]}',end=",")#以[]号形式通过键可以访问值
print(f'{x}={dict1.get(x)}')#用字典的内置方法get访问键值字典的访问字典涉及的数据分为:键、值和元素(键值对),Python提供了keys()、values()和items()内置方法,用于访问字典5.6.2字典的访问dict1={'name':'张三','country':'China','score':95}示例dict1.keys()dict1.values()dict_keys(['name','country','score'])dict1.items()获取所有键获取所有值获取所有元素dict_values(['张三','China',95])dict_items([('name','张三'),('country','China'),('score',95)])字典的访问列表元素为元组5.6.2字典的访问内置方法keys()、values()、items()的返回值都是可迭代对象,利用循环可以遍历这些对象,示例代码如下:dict1={'name':'张三','country':'China','score':95}forkeyindict1.keys():
print(key)fork,vindict1.items():print(k,v)字典的访问添加和修改:通过为指定的键赋值或使用update()方法添加或修改元素。5.6.3元素的添加和修改通过键添加元素:字典变量[键]=值使用update()添加元素:dict.update(key=value)dict1={'name':'张三','country':'China','score':95}示例dict1['games']='跳水'通过键添加dict1.update(games='跳水') 使用update方法添加字典的操作修改元素的操作与添加元素的操作相同。修改字典元素的本质是通过键获取值,再重新对元素进行赋值。5.6.3元素的添加和修改dict1={'name':'张三','country':'China','score':95}示例dict1['score']=98通过键修改dict1.update(score=99)使用update方法修改字典的操作删除:Python支持通过pop()、popitem()和clear()方法删除字典中的元素。5.6.4字典元素的删除pop():根据指定键值删除字典中的指定元素
格式:dict.pop(键)popitem():随机删除字典中的元素
格式:dict.popitem()clear():清空字典中的元素
格式:dict.clear()字典的操作5.6.4字典元素的删除per_info={'001':'张三','002':'李四','003':'王五','004':'赵六',}print(per_info.pop('001'))#使用pop()删除指定键为001的元素print(per_info)print(per_info.popitem())#使用popitem()方法随机删除元素print(per_info)字典的操作字典推导式:外侧为大括号“{}”,且内部需包含键和值两部分,具体格式如下:5.6.5字典推导式{new_key:new_valueforkey,valueindict.items()}利用字典推导式可快速交换字典中的键和值,示例如下:old_dict={'name':'Jack','age':23,'height':185}new_dict={value:keyforkey,valueinold_dict.items()}print(new_dict)示例结果{'Jack':'name',23:'age',185:'height'}5.6.5字典推导式语法一:key:字典中的key
value:字典中的valuedict.items():序列condition:条件表达式key_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_expvalue_exp:在for循环中,如果条件表达式condition成立(即条件表达式成立),返回对应的key,value并作key_exp,value_exp处理
{key_exp:value_expforkey,valueindict.items()ifcondition}知识拓展5.6.5字典推导式知识拓展#案例一:获取字典中key值是小写字母的键值对dict1={"a":10,"B":20,"C":True,"D":"helloworld","e":"python教程"}dict2={key:valueforkey,valueindict1.items()ifkey.islower()}print(dict2)#案例二:将字典中的所有key设置为小写dict3={key.lower():valueforkey,valueindict1.items()}print(dict3)5.7精彩实例如今两年偶像选秀节目风头正盛,吸引了许多喜欢唱跳、有一颗明星梦想的少年少女参加,青春有你正是节目之一。青春有你采用计票机制,选手获得的票数越多,排名就越靠前。本实例要求编写程序,接收选手的姓名和票数,输出排序后的成绩。5.7.1青春有你5.7.1青春有你思路分析(1)以“选手:成绩”字典形式存储选手成绩(2)将字典转换成列表进行排序,列表为二维列表时,按内部元素的第一个元素值排序(3)输出成绩通讯录是记录了联系人姓名和联系方式的名录,手机通讯录是最常见的通讯录之一,人们可以在通
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 镇痛药培训课件
- 2025年球型网络摄像机项目可行性研究报告
- 2025年玄武岩纤维布项目可行性研究报告
- 2025年牛肉丁项目可行性研究报告
- 2025春新版六年级科学下册 填空题专项练习
- 低压电器 课件 单元三 项目二 任务三 掌握三相异步电动机单向连续控制线路
- 呼和浩特民族学院《内蒙古地理》2023-2024学年第二学期期末试卷
- 丽水市重点中学2024-2025学年初三毕业班适应性练习卷(化学试题)含解析
- 2025春新版四年级下册语文 【期末复习:文言文专项考查】
- 2025春新版【五年级下册语文】 词语造句训练
- 2025年03月四川成都农业科技中心公开招聘笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 2025年03月国家机关事务管理局所属事业单位公开招聘应届毕业生14人笔试历年典型考题(历年真题考点)解题思路附带答案详解
- 全过程工程咨询投标方案(技术方案)
- 旅拍店合伙人协议书范本
- 握笔姿势详解全解课件
- 《三会一课》培训测试题
- Seminar_带SPL的安全集成
- 国家开放大学《电工电子技术》章节自测题参考答案
- GB∕T 16754-2021 机械安全 急停功能 设计原则
- 中国美术学院学士学位论文规范化要求
- 百科知识竞赛PPT(可直接使用)
评论
0/150
提交评论