Python程序设计基础教程(微课版) 课件 第4章 - 序列、集合与字典_第1页
Python程序设计基础教程(微课版) 课件 第4章 - 序列、集合与字典_第2页
Python程序设计基础教程(微课版) 课件 第4章 - 序列、集合与字典_第3页
Python程序设计基础教程(微课版) 课件 第4章 - 序列、集合与字典_第4页
Python程序设计基础教程(微课版) 课件 第4章 - 序列、集合与字典_第5页
已阅读5页,还剩70页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python程序设计第4章

序列、集合与字典学习目标理解数据容器应用场景掌握常用容器对象的创建和操作知识目标能够使用常用容器存储和操作数据能够正确选择容器解决实际问题能力目标追求创新,避免重复造车轮个人职责的重要性团队协作与组织的重要性情感态度与价值观什么是数据容器01020403序列集合字典目

录什么是数据容器01020403序列集合字典目

录数据容器的概念数据容器:可以存储多个数据项的复合数据类型序列:字符串、列表、元组集合字典每种容器都有其特定的方法,应根据具体的应用场景和需求,选择合适的容器什么是数据容器71什么是数据容器01020403序列集合字典目

录序列020403集合字典目

录什么是数据容器01字符串列表元组切片序列:存储有序的元素集合字符串列表元组4.1序列71元素按插入的顺序排列位置关系固定通过索引访问任意元素正数索引:左->右负数索引:右->左字符串:零个或多个字符组成的有序字符序列多行注释:三引号对''''''""""""字符串字面量:单引号/双引号对'good'"100"注意:Python中单个字符也是字符串4.1.1字符串71字符串变量的定义4.1.1字符串72language='Python'author='GuidovanRossum'示例4-1变量=字符串字面量字符串变量的访问4.1.1字符串72info='hello'print(info)

#打印整个字符串print(info[1]) #打印info第二个字符(从左往右计数)print(info[-2]) #打印info第二个字符(从右往左计数)info[0]='H'

#错误:不可以修改已经创建的字符串中的字符info='Hello' #正确示例4-2字符串格式化%f-string字符串方法format()4.1.1字符串72常用占位符%d%f%s占位符:{}字符串格式化:f-string在字符串前加上字母“f”或“F”,可以将花括号“{}”内的表达式作为字符串的格式化参数4.1.1字符串72name='张三'age=18print(f'{name}今年{age}岁')#直接使用变量的值替换{}

a=5b=10print(f'a+b={a+b}')#用a+b的值替换{}

m=2.99print(f'梨子{m:.2f}元/斤')#冒号后面是指定的格式示例4-3字符串格式化:format()4.1.1字符串73#按实际参数出现的顺序逐个填入占位符name='张三'age=18print('{}今年{}岁'.format(name,age))示例4-4<模板字符串>.format(<逗号分隔的实际参数>)字符串格式化:format()4.1.1字符串73#按实际参数的位置索引填入相应的占位符var='{0}9元一斤,{1}10元四斤,{0}和{1}各买一斤多少钱?'print(var.format('苹果','桃子'))

#按关键参数填入相应的值var='小明今年{age}岁,正在读{school}。'print(var.format(age=17,school='高中'))示例4-4<模板字符串>.format(<逗号分隔的实际参数>)字符串运算+:连接左右两个字符串*:将字符串重复N次,字符串为左操作数,N为右操作数4.1.1字符串73str1='Hello,'str2='World!'result=str1+str2#打印结果:Hello,World!str1='abc'result=str1*3#打印结果:abcabcabc示例4-5、4-6Python提供一些内置函数处理字符串len():获取字符串长度4.1.1字符串73str1='abc'print(len(str1))#打印结果:3示例4-7函数名(待处理对象)len()也可用于其他数据容器,获取容器内元素个数chr():获取ASCII码对应的单个字符ord():获取单字符的ASCII码4.1.1字符串74x=123print(chr(x))#打印结果:{x='1'print(ord(x))#打印结果:49示例4-8、4-9字符串方法split()strip()join()find()……4.1.1字符串74字符串对象.方法名(参数)split():根据指定的分隔符,将字符串拆分成多个子字符串,并返回一个包含这些子字符串的列表sep:可选,指定分隔符字符串,如果不提供或为空字符串,默认使用空白符,包括空格、制表符、回车符等maxsplit:可选,指定最大拆分次数4.1.1字符串74字符串对象.split([sep,maxsplit])split()使用4.1.1字符串74#使用默认分隔符(空白符)str1='HelloWorldfromPython'result=str1.split()print(result)#输出:['Hello','World','from','Python']#指定分隔符(,)str1='apple,banana,orange'result=str1.split(',')print(result)#输出:['apple','banana','orange']示例4-10split()使用4.1.1字符串74#指定最大切分次数为2str1='apple,banana,orange,grape'result=str1.split(',',2)print(result)#输出:['apple','banana','orange,grape']示例4-10strip():删除字符串开头和结尾的指定字符chars:可选,指定要删除的字符,如果不提供或为空字符串,默认删除空白符4.1.1字符串75字符串对象.strip([chars])strip()使用4.1.1字符串75#删除头尾空白符str1='Hello,World!'result=str1.strip()print(result)#输出:'Hello,World!'#删除头尾的尖括号str1='<<<Hello,World!>>>'result=str1.strip('<>')print(result)#输出:'Hello,World!'示例4-11join():将列表、元组或其他可迭代对象中的字符串按照指定的分隔符连接起来separator:指定的分隔符字符串iterable:要将元素连接起来的可迭代对象4.1.1字符串75separator.join(iterable)join()使用4.1.1字符串75words=['apple','banana','orange']result=','.join(words)#以','连接列表对象word中的所有字符串print(result)#输出:'apple,banana,orange'示例4-12find():在字符串中查找子字符串的位置,如果找到了子字符串,返回其第一个字符的索引;如果没有找到,返回-1sub:要查找的子串start:可选,指定开始查找的索引,默认为0,表示从字符串第一个元素开始找end:可选,指定结束查找的索引,默认为字符串的长度查找的索引范围:[start,end)4.1.1字符串75字符串对象.find(sub[,start[,end]])find()使用4.1.1字符串75str1='Hello,World!'#从第一个元素找到最后一个元素index=str1.find('World')print(index)#输出:7#在“Hello,”范围内找index=str1.find('World',0,6)print(index)#输出:-1示例4-13列表(list):存储一组有序元素特点元素可以是任何类型,且类型可以不同有序:元素在列表中的位置是固定的可变:可动态添加、删除、修改元素4.1.2列表76创建列表:[]“[]”内为空表示创建一个空列表对象多个元素作为初始值,这些元素之间用逗号隔开4.1.2列表76empty=[]fruits=['apple','banana','cherry']counter=[1,4,10]diff=['spam',2.0,5,[10,20]]示例4-14创建列表:list()根据其他对象(元组、range、字符串、集合等)的值,创建一个新的列表对象返回4.1.2列表77a=list()#创建空列表b=list('Helloworld!')#根据字符串创建列表示例4-15访问列表元素4.1.2列表77fruits=['apple','banana','cherry']print(fruits)#打印:['apple','banana','cherry']print(fruits[0])#打印结果:appleprint(fruits[-1])#打印结果:cherryfruits[1]='mango'print(fruits)#打印:['apple','mango','cherry']示例4-16获取元素位置:index()返回第一个匹配元素的索引,若不存在该元素则报错4.1.2列表77fruits=['apple','banana','cherry']print(fruits.index('cherry'))#打印结果:2示例4-16列表对象.index(item))增加元素(原地修改)append():向列表对象的末尾添加一个元素insert():在列表的指定位置插入一个元素4.1.2列表77列表对象.append(item)列表对象.insert(index,item)增加列表元素4.1.2列表78fruits=['apple','banana','cherry']fruits.append('orange')print(fruits)#打印结果:['apple','banana','cherry','orange']fruits.insert(1,'mango')print(fruits)#打印结果:['apple','mango','banana','cherry','orange']示例4-18删除元素(原地修改)pop():删除并返回指定索引的元素,默认删除最后一个remove():删除列表中首次出现的指定元素(原地修改)4.1.2列表78列表对象.pop([index])列表对象.remove(item)删除列表元素4.1.2列表78fruits=['apple','banana','cherry']x=fruits.pop()print(x)#打印结果:cherryfruits.remove('apple')print(fruits)#打印结果:['banana']示例4-19Python列表支持动态增长或缩减为保证数据存储区域的连续性,在列表中间增加、删除元素,或者原本分配的空间不够时,会进行数据移动不适合需要频繁增加、删除数据的场合当需要增删数据时,应尽量从列表尾部操作4.1.2列表78清空列表4.1.2列表78fruits=['apple','banana','cherry']fruits.clear()#fruits的id不变,仅删除其中所有元素fruits=[]#fruits的id变了,引用了一个新的空列表delfruits#fruits对象被删除,不能再使用了示例4-20遍历列表4.1.2列表79host_list=['172.18.5.1',

'172.18.5.2',

'172.18.5.3']foripinhost_list:print(ip)示例4-21列表元素排序sort():原地排序4.1.2列表79numbers=[19,23,-1,-10,3,14]numbers.sort()print(numbers)#打印结果:[-10,-1,3,14,19,23]numbers.sort(reverse=True)print(numbers)#打印结果:[23,19,14,3,-1,-10]示例4-21列表对象.sort()列表推导式:简洁的语法快速生成列表4.1.2列表79a=[x**2forxinrange(1,11)ifx%2==0]print(a)#打印结果:[4,16,36,64,100]importrandoma=[random.randint(1,20)foriinrange(5)]print(a)#打印结果:[9,18,8,1,4]示例4-23[元素表达式for循环变量in可迭代对象if条件表达式]决定列表元素值的计算方式列表元素的来源列表元素的个数满足条件才生成一个新元素示例4-23转换为普通for循环实现4.1.2列表79a=[x**2forxinrange(1,11)ifx%2==0]print(a)#打印结果:[4,16,36,64,100]===>a=[]forxinrange(1,11):ifx%2==0:a.append(x**2)示例4-23元组(tuple):存储一组有序元素特点元素可以是任何类型,且类型可以不同有序:元素在列表中的位置是固定的不可变:元组对象一旦创建,就不能修改其元素4.1.3元组80创建元组:()“()”内为空表示创建一个空元组对象多个元素作为初始值,这些元素之间用逗号隔开4.1.3元组80empty=()#创建空元组counter=(1,2,3,4,5)diff=('physics',4.24,1997)#元素类型可不相同fruits=('apple',)#只有一个元素时,元素后需添加逗号示例4-24创建元组:tuple()根据其他对象的值,创建一个新的元组对象返回4.1.3元组80a=tuple()#创建空列表b=tuple('Helloworld!')#根据字符串创建元组示例4-25访问元组元素4.1.3元组80fruits=('apple','banana','orange')print(fruits[1])#打印结果:bananafruits[1]='mango'#错误:不能修改元组的内容people=(['Alice',25,'Engineer'],['Bob',30,'Doctor'],['Charlie',35,'Teacher'],)people[0][1]=28#改后:['Alice',28,'Engineer']示例4-26遍历元组4.1.3元组80people=(['Alice',25,'Engineer'],['Bob',30,'Doctor'],['Charlie',35,'Teacher'],)forpinpeople:print(f'姓名:{p[0]},年龄:{p[1]},职业:{p[2]}')示例4-27切片操作:选取序列的子集start:切片开始的索引,默认为0stop:切片结束的索引(但不包括该位置的元素),默认为序列的长度step:选取元素的步长,默认为1,即连续选取start、stop可以使用正数或负数索引step为正数时要求从左至右取子集,为负数时要求从右至左取子集4.1.4切片81变量=序列对象[start:stop:step]序列的切片操作4.1.4切片81my_string='HelloWorld!'slice1=my_string[:5] #切片结果:Helloslice2=my_string[6:] #切片结果:World!numbers=[1,9,12,3,79,-1]split1=numbers[1:5]

#切片结果:[9,12,3,79]split2=numbers[1::2] #切片结果:[9,3,-1]split3=numbers[-1:-3:1]

#start至stop的方向与步长方向不一致,得到空列表[]split4=numbers[-1:-3:-1] #切片结果:[-1,79]示例4-28什么是数据容器01020403序列集合字典目

录集合0304字典目

录什么是数据容器0102序列集合的特点集合的创建集合的使用集合(set)无序性:集合不保证元素的顺序不重复性:每个元素都是唯一的元素类型可以不同,但必须是不可变数据类型或可哈希的4.2

集合84{}:必须至少包含一个元素set()4.2.1创建集合85numbers={1,2,3,1,5}#numbers包含:1、2、3、5fruits={'apple','banana','cherry'}diff={'spam',5,2.0,(10,20)}a=set()#创建空集合b=set('Helloworld!')#根据字符串创建集合示例4-29集合不支持索引使用in判断某个数据是否为集合的元素4.2.2访问集合元素85numbers={1,2,3,4,5}if1innumbers:print('是集合的元素,开始处理')else:print('不是集合的元素,其他处理')示例4-30add():将单个元素添加到集合中,如果集合中已经存在该元素,add()不会做任何事情4.2.3增加集合元素85fruits={'apple','banana'}fruits.add('orange')#现在fruits包含'apple'、'banana'、'orange'numbers={1,2,3}numbers.add(1)#现在numbers包含1、2、3示例4-31集合对象.add(item)discard():从集合中删除一个元素,如果指定的元素不存,discard()方法不会有任何效果4.2.4删除集合元素85fruits={'apple','banana','orange'}fruits.discard('banana')#现在fruits包含'apple'、'orange'示例4-32集合对象.discard(item)使用for循环遍历集合对象4.2.5遍历集合86ISBNs={'9787302629443','9787302629665','9787302567561'}forisbninISBNs:print(isbn)示例4-33sorted():内置函数,为非原地排序iterable:要排序的可迭代对象,排序后不发生变化key:可选,指定一个函数提取用于比较的数据reverse:可选,指定排序方向,True表示升序排序,False表示降序排序返回排序后的列表对象4.2.6集合元素排序86列表对象=sorted(iterable[,key=key_function,reverse=reverse_flag])sorted()做集合元素排序4.2.6集合元素排序86fruits={'orange','apple','mango'}result=sorted(fruits)#排序结果以列表对象返回print(result)#打印:['apple','mango','orange']示例4-34利用列表的sort()方法排序4.2.6集合元素排序86fruits={'orange','apple','mango'}fruits_list=list(fruits)#转换成列表对象fruits_list.sort()#利用列表对象的sort()方法排序print(fruits_list)#打印:['apple','mango','orange']示例4-35什么是数据容器01020403序列集合字典目

录字典04目

录什么是数据容器0102序列03集合字典的特点字典的创建字典的使用字典(dict)存储键值对:key:value键唯一,可以是不可变数据类型或可哈希数据值部分可以重复,可以是任何数据类型4.3字典88{}或dict()4.3.1创建字典88#创建空字典empty={}fruits=dict()#创建有初始值的字典counter={'right':4,'wrong':2}emotions=dict([(0,'anger'),(1,'sad'),(2,'happiness')])示例4-36以键作为索引,引用对应值部分4.3.2访问字典元素88counter={'right':4,'wrong':2}print(counter['right'])#打印结果:4counter['right']=0#->{'right':0,'wrong':2}counter['right']+=1#->{'right':1,'wrong':2}示例4-37字典对象[key]为避免“键不存在”的错误,可先检查键是否存在,再获取值4.3.2访问字典元素89counter={'right':4,'wrong':2}if'other'incounter:value=counter['other']示例4-38new_key:字典中没有的键init_value:初始值4.3.3增加字典元素89counter={'right':4,'wrong':2}counter['help']=0print(counter)#打印结果:{'right':4,'wrong':2,'help':0}示例4-39字典对象[new_key]=init_valuepop():删除指定的键值对,并返回被删除的值key:要删除的键default:可选,指定当键不存在时返回的默认值,若未提供default参数,当键不存在

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论