《Python基础案例教程》(微课版)第4章 Python数据结构第4章 Python数据结构生活中我们常常把一系列相关的数据存储在一起 ,比如一个人的姓名、性别、身高、体重等情况。在处理这类数据时,往往把数据集中在一起,利用数据结构进行存储,从而方便对数据进行管理, 提高数据的处理和存储效率。Python中的数据结构,常见的有列表、元组、集合、字典等形式。通过本章的学习,你将认识Python中常 见数据结构的形式,能够针对不同的数据,选用合适的数据结构;掌握数据结构的使用方法,综合处理一系列数据,从而获取有用的信息。教学内容 01 列表02 元祖03 字典目录CONTENTS第4章 Python数据结构04 集合4.1.1 列表的创建与删除创建列表的 方式有多种,目的都是为了更好地把数据组织在一起进行处理。创建列表最直接的方式是通过赋值语句创建,当然也可以通过list()、ran ge()函数进行创建。如果不再需要列表中的部分元素,可以删除列表的部分元素,当然也可以把列表整体删除。列表(list)是Pytho n最基本的数据结构,列表的所有元素都存放在一对中括号“[]”中,每相邻两个元素中间用逗号“,”隔开。列表的元素可以是数字、字符串、 列表、元组等任何类型。本课知识点4.1.1 列表的创建与删除本课知识点列表格式:listname=[元素1,元素2,元素3,…… ,元素n](1)示例:jieshao=[''Python'',1991,''发行'',''中文名:蟒蛇''](2)提醒:元素没有个数限制,可以 是Python的任何数据类型。列表索引:列表中的每一个元素都有编号,称为索引。正向用0~n-1表示,反向用-1~-n表示。例如li stname[0],代表列表的第一个元素。4.1.1 列表的创建与删除本课知识点使用赋值语句直接创建列表。示例:name=["李 明","王伟","张丽","王芳"]、num=[1,2,3,4,5]创建空列表。示例:num=[]创建数值列表:通过list()函 数创建。示例:list(range(2,10,2))→[2,4,6,8]4.1.1 列表的创建与删除本课知识点删除列表:使用de l语句删除列表。示例:del name # 删除名为name的列表?删除列表元素:(1)根据索引删除:使用del语句删除列表元 素。 del s[0] # 删除列表s的第一个元素(2)根据索引删除:使用pop()方法实现。 s.pop(-1 ) # 删除列表s中最后一个元素(3)? 根据元素值删除:使用remove()方法实现,如果元素不存在,则报错。 s.re move("元素值") # 删除列表s中指定元素的第一个匹配项4.1.1 列表的创建与删除 《中国诗词大会》是一个深受广大 诗词爱好者喜爱的节目。其中的诗词填空环节,给出诗词的上句,请你说出诗词的下一句;或者给出下句,请你说出上一句。请你编写程序,模拟出 题的过程,随机显示一首诗词中的某一句,要求回答出相应的上句或下句。案例分析案例1 诗词填空4.1.1 列表的创建与删除impor t randomshi=["好雨知时节","当春乃发生", "随风潜入夜","润物细无声", "野径云俱黑","江船火独明", "晓看红湿处","花重锦官城"]i=random.randint(0,7)prin t(shi[i])if i%2==0: print(" 说出诗词的下一句: ______________ ")else: print(" 说出诗词的上一句: ______________")案例分析4.1.2 列表访问 由于列表是有序数列, 在访问列表元素的时候,只需引用该元素的位置或索引即可。如果要访问列表中的多个元素,也可以采用切片的方式访问列表中一定范围内的元素。 本课知识点 可以通过“+”将两个列表相连接,相同的元素不会删除;也可以通过乘号,使用“”乘以数字,可以重复列表相应次数。l istname.append(元素) :列表末尾添加一个元素。listname.extend(列表):列表末尾添加另一个列表的元素 。 示例:list1=[1,2,3]、list2=[4,5] list1.extend(list2)→[1,2,3,4, 5]listname.insert(列表索引,元素):给列表中索引位置增加一个元素。4.1.2 列表访问索引访问:利用列表的索引 ,访问列表中的某一个元素。形式:listname[索引]示例:s[0] #访问列表s中的第一个元素本课知识点切片访问:访问列表中 一定范围内的部分元素。注意在列表范围内访问,否则程序报错。形式:listname[start:end:step]? start:开 始位置? end:结束位置(访问时不包含结束位置)? step:步长,默认为1示例:list1= [1,2,3,4,5,6,7,8 ] print(list1[1:3])结果:[2, 3]4.1.2 列表访问案例分析生活中很多人把自己喜欢的歌曲收集在一 起,形成歌单的形式,方便自己随时听歌。在制作歌单时,可以删除不想听的歌曲,也可以添加新的歌曲,对歌单可以选择某首歌曲进行播放,或者 选择部分歌曲进行播放。案例2 制作歌单4.1.2 列表访问案例分析import randomgequ=["《我的未来不是梦》"," 《我相信》","《相信自己》", "《从头再来》","《飞得更高》","《爱拼才会赢》"]gequ.append("《超 越梦想》")gequ.pop(1)print("——显示全部歌单——")for j in gequ: print("第",g equ.index(j)+1,"首:",j)n=int(input("输入你想听的歌曲(输入序号):"))print("播放第", n,"首歌曲:",gequ[n-1])print("——随机播放部分连续歌曲——")l=len(gequ)i=random.ran dint(0,l-1)j=random.randint(0,l-1)if i>j: i,j=j,iprint("播放第",i +1,"首到",j+1,"首歌曲:",gequ[i:j+1])4.1.3 列表运算本课知识点 对于列表,除了可以 添加和删除元素,还可以求列表元素的个数,并能对列表进行排序、求最大值、求最小值、求列表元素和等操作。Python提供了丰富的列表运 算方式,能有效地对列表数据进行加工和处理。? len(listname):列表中元素的个数? max(listname):列表中的 最大元素? min(listname):列表中的最小元素? sum(listname):统计数值列表中所有元素的和4.1.3 列表 运算案例分析某家电卖场需要对本月部分商品销售情况进行统计,求出本月销售量最高和最低商品,以便调整销售策略,同时根据本月销售量对下月 销售进行预估,判断是否要补充商品库存。你能帮助卖场统计商品销售的情况吗?案例3 商品销售统计4.1.3 列表运算案例分析good s=["电视机","洗衣机","冰箱","空调","热水器"]kucun=[100,100,100,100,100]sale=[4 2,20,75,85,36]maxn=max(sale)minn=min(sale)i=sale.index(maxn)j=sal e.index(minn)print("本月销量最高的是:",goods[i],"销量为:",sale[i],sep="")pri nt("本月销量最低的是:",goods[j],"销量为:",sale[j],sep="")l=len(kucun)print(" 当前库存为:")for i in range(0,l): kucun[i]-=sale[i] print(" "4, goods[i],kucun[i])for i in range(0,l): if kucun[i]-sale[i]<0: print(goods[i],"需要补充库存",sep="")4.2.1 创建元祖本课知识点1、元组格式:元组名= (元素1,元素2,元素3,……,元素n) 示例:week=(''星期一'', ''星期二'', ''星期三'', ''星期四'', ''星期五'', ''星期六'', ''星期天'') 提醒:元素可以是Python的任何数据类型。2、元组元素只有一个时,在元素 后增加逗号,否则()被当作运算符使用。 示例:a=(10,)3、元组索引使用与列表索引使用一致。元组中的元素无法修改和 删除,适用于保存固定元素的序列,例如保存生肖、星座等。1、使用赋值语句直接创建元组。 示例:shengxiao=(''鼠 '',''牛'',''虎'',''兔'',''龙'',''蛇'',''马'',''羊'',''猴'',''鸡'',''狗'',''猪'')2、创建空元组:a=()3、创建数值元 组:通过tuple()函数创建。 示例:tuple(range(1,10,2))→(1,3,5,7,9)4.2.1 创建元祖案例分析老师在课堂上经常有提问环节,采用随机点名回答问题的方式,既体现了抽取学生的公平和公正,也让每个同学都做好回答问题的 准备,使学生都能积极参与到课堂活动中,同时也增加了课堂趣味性。请你使用Python软件编写随机点名程序,从班级同学中随机抽取一位同 学,并显示该同学姓名。案例4 随机点名程序import randomrenyuan=("方轻舟","孙灿","张华","林伟", "张丽","刘晓青","周子豪","宣雨晴")l=len(renyuan)i=random.randint(0,l -1)print(renyuan[i])4.2.2 访问元组本课知识点 元组是有序序列,可以根据索引进行访问。设元组长度为n, 则正向索引从0到n -1,反向索引为-1到-n,可以直接print()函数进行输出。 示例:shengxiao=(''鼠'',''牛'' ,''虎'',''兔'',''龙'',''蛇'',''马'',''羊'',''猴'',''鸡'',''狗'',''猪'')shengxiao[6:8]切片访问元组数据sh engxiao[2]访问单个元组数据使用for语句,可以访问全部元组数据。示例:shengxiao=(''鼠'',''牛'',''虎'',''兔 '',''龙'',''蛇'',''马'',''羊'',''猴'',''鸡'',''狗'',''猪'') for value in shengxiao: print(value ,end="")4.2.2 访问元组案例分析生肖又称属相,是中华民族悠久的民俗文化,每个 中华儿女在出生时都确定自己的生肖。对于自己的生肖你可能记得很清楚,但是任意给定一个人的出生年份,你能很快算出他的生肖吗? 案例5 计算生肖shengxiao=("猴","鸡","狗","猪","鼠","牛", "虎","兔" ,"龙","蛇","马","羊")year=int(input("输入你的出生年份:"))k=year%12print("你的生肖 是:",shengxiao[k])4.3.1 字典的创建与访问本课知识点字典名={键key1:值value1, 键key2:值v alue2, ……, 键keyn:值valuen}示例:dict1={''姓名'':''方舟'',''年龄'':20,''身高'':180,''体重 '':75}1、创建空字典:dict1={}2、直接赋值创建字典:示例:dict2={''北京'':''010'',''上海'':''021'','' 广州'':''020''}3、使用dict()函数、zip()函数把两个列表创建为字典:示例:city=[''北京'',''上海'',''天津'', ''重庆''] quhao=[''010'',''021'',''022'',''023''] dict3=dict(zip(ci ty,quhao))4.3.1 字典的创建与访问本课知识点访问字典,就是根据键获得与键关联的值。由于字典是无序序列,推荐使用ge t()函数获得指定键的值,如果字典中不存在,可返回None或者指定的内容。示例:yuwen={''林华'':92,''张晴'':90,''李 小明'':85,''刘丽'':89}? yuwen[''林华'']→92? yuwen[''王明''] →字典无此键,程序报错? yuwen.g et(''刘丽'') →89? yuwen.get(''张晓薇'',93) →字典无此键,追加输出934.3.1 字典的创建与访问案例分 析在谍战影视剧中,经常能看到破解密码的环节,往往需要通过密码本,破译密码。下面请你来设计一个密码本,输入密文,根据密码本破解密文, 生成原文。案例6 密码本mi={"j":"a","r":"b","x":"c","f":".","e":"e","w":"f", "h":"g","y":"h","d":"i"," ":"j","m":"k","a":"l", "o":"m ","n":"n","q":"o","''":"p","y":"q","b":"r", "v":"s","s":"t"," p":"u","t":"v","z":"w","l":"x", "k":"y","c":"z","i":"''","u": ".","g":" "}miwen=input("请输入密文:")print("密文对应原文:",end="")l=len(miw en)for i in range(0,l): print(mi.get(miwen[i]),end="")4.3.2 字 典的操作本课知识点添加字典元素删除字典元素4.3.2 字典的操作案例分析在外出就餐的过程中,常常用点餐软件进行点餐。当我们选中某 样菜品的时候,单击“+”按钮,选择该菜品放入已选菜单中。当某些菜品库存为0时,提示:“该菜品已经售完,请选择其他菜品。”,最后完成 点餐。案例7 点餐程序4.3.2 字典的操作案例分析caidan={"吴山贡鹅":3,"石耳炒蛋":6,"土豆丝":10, "农家小炒":4,"臭鳜鱼":5,"笋烧黑猪肉":0, "地锅鸡":7,"红烧牛肉":7,"西红柿蛋汤": 10}diancan=[]print(caidan)ch="y" whi le ch=="y": choice=input("请输入你选择的菜品:") if choice in caidan: if caidan[choice]>0: diancan.append(choice) caidan[choice]-=1 else: print("该菜品已经售完 ,请选择其他菜品。") ch=input("你还需要选择其他菜品吗(y/n):")print("你选择的菜品是:",dian can)4.4.1 集合的创建本课知识点直接赋值创建使用set()函数创建4.4.1 集合的创建案例分析在日常上网过程中,常常 需要注册用户,当你输入用户名时,系统会自动对比数据库中的用户名信息。如果当前用户名已经存在,则提示“当前用户已经存在,请重新输入。 ”;如果该用户名无人使用,则提示“可以使用当前用户名注册。”。案例8 用户注册shuju={''vivian'',''apple'',''s ky'',''sun2020'',''apple'', ''abc'',''abc123'',''fangzhou'',''jay''}y onghum=input("请输入你注册的用户名:")if yonghum in shuju: print("当前用户已经存 在,请重新输入。")else: print("可以使用当前用户名注册。")4.4.2 集合元素本课知识点? 添加、删除集合元素4.4.2 集合元素本课知识点集合的并、交、差等运算4.4.2 集合元素案例分析学校提供了部分选修课程供学生选修,每位学生可任意选择1-3门选修课程。现对学生选择的选修课程进行统计,将全体学生的选课情况汇总到一起。当有学生选择某门选修课程时,开设这门选修课程。列出所有开设的选修课程,以及没有无人选择的课程情况。案例9 选课情况调查ke={''说话的艺术'', ''图像处理'', ''中国武术'', ''基础救护'', ''人生规划'', ''商务英语'', ''心理学'', ''语言文学'', ''Ecxel办公'', ''Word办公'', ''哲学''}x1=[''语言文学'',''图像处理'',''Ecxel办公'']x2=[''基础救护'',''Word办公'',''商务英语'']x3=[''语言文学'',''人生规划'',''说话的艺术'']x=set(x1+x2+x3)print("开设选修课程为:",x)s=ke-xprint("无人选修的课程为:",s)THANKS FOR WATCHING |
|