1、Python3 程序设计 主讲教师:5 Python的组合的组合数据类型数据类型软件工程师系列Python3程序设计程序设计第5章 Python的组合的组合数据类型数据类型 本章内容本章内容 序列序列类型类型 列表列表 元组元组 字典字典 集合集合 组合组合数据类型的应用数据类型的应用软件工程师系列Python3程序设计程序设计5.1 序列类型 序列类型包括列表、元组和序列类型包括列表、元组和字符串字符串等等三种三种。序列类型的元素之间存在先后关系,可以通过索引来访问。序列类型支持成员关系操作符(in)、分片运算符(),序列中的元素也还可以是序列类型。单一字符串只表达一个含义,也被看作是基本数
2、据类型。序列类型,都可以使用相同的索引体系,即正向递增序号和反向递减序号,软件工程师系列Python3程序设计程序设计5.1 序列类型操作符或函数操作符或函数功能描述功能描述x in s如果x是s的元素返回True,否则返回 Falsex not in s如果x不是s的元素返回True,否则返回 Falses+t返回s和t的连接s*n将序列s复制n次si索引,返回序列的第i个元素si:j分片,返回包含序列s第i到j个元素的子序列(不包含第j个元素)si:j:k返回包含序列s第i到j个元素以k为步长的子序列len(s)返回序列s的元素个数(长度)min(s)返回序列s中的最小元素max(s)返回
3、序列s中的最大元素s.index(x,i,j)序列s中从i开始到j位置中第一次出现元素x的位置s.count(x)序列s中出现x的总次数软件工程师系列Python3程序设计程序设计5.2 列表列表 列表的基本操作列表的基本操作列表是一种序列类型,使用序列的操作符可以完成切片、检索、计数等基本操作。lst1=#创建空列表 lst2=python,12,2.71828,0,0,12#创建由不同类型元素组成的列表 lst3=21,10,55,100,2#访问列表元素 python in lst2#True lst23#通过索引访问0,0 lst21:4#12,2.71828,0,0 lst2-4:-
4、1#12,2.71828,0,0 len(lst2)#计算列表的长度 lst2.index(12)#检索列表元素 1 lst2.count(12)#计算列表中出现元素的次数软件工程师系列Python3程序设计程序设计5.2 列表列表 列表的方法列表的方法 列表还有特有的函数或方法用于完成列表元素的增删改查,其中ls、lst分别为两个列表,x是列表中的元素,i和j是列表的索引。操作符操作符lsi=xls.append(x)lsi:j=lstls.clear()lsi:j:k=lstls.copy()del lsi:jls.insert(i,x)del lsi:j:kls.pop(i)ls+=ls
5、t(ls.extend(lst)ls.remove(x)ls*=nls.reverse(x)ls.sort()软件工程师系列Python3程序设计程序设计5.2 列表列表 列表的方法列表的方法#初始化初始化3个列表个列表 lst2=python,12,2.71828,0,0,12 lst3=21,10,55,100,2 lst=aaa,bbb lst22=3.14#替换元素替换元素python,12,3.14,0,0,12 lst20:3=lst#aaa,bbb,0,0,12#追加(合并)列表追加(合并)列表 lst2+=lst3#aaa,bbb,0,0,12,21,10,55,100,2 d
6、el lst2:3#删除删除0,1,2等等3个列表个列表元素元素软件工程师系列Python3程序设计程序设计5.2 列表列表 遍历列表遍历列表 用于逐个处理列表中的元素 使用for循环和while循环来实现例5-3 用for循环遍历列表。#ex0503.pylst=primary school,secondary school,high school,collegefor item in lst:print(item,end=,)软件工程师系列Python3程序设计程序设计5.3 元组 是包含0个或多个元素的不可变序列类型。任何元素不能替换或删除。创建元组,只要将元组的元素用小括号包围,并使用
7、逗号隔开即可。元组的基本操作tup1=(phy,chem,1997,2000)tup2=(1,2,3,4,5)tup3=a,b,c,d#括号可以省略tup4=(50,)#元组只有一个元素时,逗号不可省略tup5=(1,2,3),(4,5),(6,7),9)1997 in tup1#True tup2+tup3 tup11#chemistry len(tup1)#4 max(tup3)#d软件工程师系列Python3程序设计程序设计4.3 元组 元组与列表的元组与列表的转换转换列表和元组相互转换的函数是tuple(lst)和list(tup)。例5-6 元组与列表相互转换。tup1=(123,x
8、yz,zara,abc)lst1=list(tup1)lst1.append(999)tup1=tuple(lst1)tup1(123,xyz,zara,abc,999)软件工程师系列Python3程序设计程序设计5.4 字典字典 字典是Python中内置的映射类型。由key-value的键值对组成.在搜索字典时,首先查找键,当查找到键后就可以直接获取该键对应的值,字典中的值无特殊的顺序,但都存储在一个特定的键(key)里.键可以是数字、字符串以及元组等。软件工程师系列Python3程序设计程序设计5.4 字典字典 字典的基本字典的基本操作操作-创建创建字典字典 字典由“”定义,字典的键和值用
9、冒号分开,元素之间用逗号分隔。例5-7 创建字典。dict1=dict2=id:101,name:Rose,ad:CJroad,pcode:116022 dict3=dict(id=101,name=Rose,ad=“CJroad,pcode=116022)dict4=dict(id,101),(name,Rose),(add,CJroad)dict2#显示字典内容id:101,name:Rose,address:Changjianroad,pcode:116022软件工程师系列Python3程序设计程序设计5.4 字典字典 字典的基本字典的基本操作操作-字典字典检索检索 in运算符测试一个指
10、定的键值是否存在于字典中 通过键来查找值,使用表达式dictskey,返回key所对应的值。dict=id:101,name:Rose,ad:CJroad,pcode:116022 id in dict Rose in dict#使用关键字检索 dictid#101 dictpcode#116022 t1=dictid,dictpcode软件工程师系列Python3程序设计程序设计5.4 字典字典 字典的基本字典的基本操作操作-添加与修改字典添加与修改字典元素元素 向字典中添加新的键值对,或者修改键所关联的值 使用“dictskey=value”例5-9 字典元素添加与修改检索。dict1=i
11、d:101,name:Rose,address:Changjianroad dict1address=Huangheroad dict1#id:101,name:Rose,address:Huangheroad#添加加字典元素 dict1email= dict1id:101,name:Rose,address:Huangheroad,email:软件工程师系列Python3程序设计程序设计5.4 字典字典 字典的常用字典的常用函数函数dicts为字典名,key为键,value为值。函数或操作函数或操作函数或操作函数或操作dicts.keys()dicts.clear()dicts.values
12、()del dictskeydicts.items()key in dictsdicts.get(key,defualt)dicts.copy()dicts.pop(key,default)dicts.update(dicts2)dicts.popitem()软件工程师系列Python3程序设计程序设计5.4 字典字典 1.keys()、values()和和items()方法方法 返回字典的键的视图、值的视图和键值对的视图 dicts=id:101,name:Rose,ad:CJroad,pcode:116022#获得键的视图 key1=dicts.keys():#获得值的视图 values1
13、=dicts.values()#获得键值对的视图 items=dicts.items()type(items)软件工程师系列Python3程序设计程序设计5.4 字典字典 2.get()、pop()、popitem()方法方法 get()方法返回键对应的值。如果key不存在,返回空值。pop()方法从字典中删除键,并返回对应的值。popitem()方法从字典删除并返回键值对。3.copy()和和update()方法方法 copy()方法返回一个字典的复本,但新产生的字典与原字典的id是不同的。update()方法可以使用一个字典更新另一个字典,如果两个字典有相同的键存在,键值对会进行覆盖。软件
14、工程师系列Python3程序设计程序设计5.5 集合 集合(set)是0个或多个元素的无序组合,但集合本身是可变的.集合中的元素只能整数、浮点数、字符串等基本数据类型 集合中的元素是无序的,没有索引位置的概念。集合中的任何元素都没有重复,软件工程师系列Python3程序设计程序设计5.5 集合 集合的常用集合的常用操作操作 创建集合set()函数用来创建集合。set()函数最多有一个参数。参数必须是可迭代的类型。aset=set(python)#字符串作为参数创建集合 bset=set(1,2,3,5,2)#列表作为参数创建集合 cset=set()#创建空集合软件工程师系列Python3程序
15、设计程序设计5.5 集合 集合的集合的操作操作 aset=set(python)bset=set(1,2,3,5,2)cset=bset.copy()#向集合中添加元素向集合中添加元素 bset.add(y)bset.pop()#判断集合中是否个子在重复元素判断集合中是否个子在重复元素 bset.isdisjoint(aset)#False len(aset)#6 cset.clear()cset#set()操作函数操作函数S.add(x)S.clear()S.copy()S.pop()S.discard(x)S.remove(x)S.isdisjoint(T)len(S)软件工程师系列Pyt
16、hon3程序设计程序设计5.5 集合 集合运算集合运算 Python中的集合与数学中集合的概念是一致的.两个集合可以做数学意义上的交集、并集、差集计算等操作。操作符或函数操作符或函数S&T或或S.intersaction(T)S|T或或S.union(T)S-T或或S.difference(T)ST或或s.symmetric_difference_update(T)S=T或或 S.issuperset(T)软件工程师系列Python3程序设计程序设计5.6 组合数据类型的应用组合数据类型的应用 句子句子中的词频统计中的词频统计 词频统计需要考虑下面几个问题。(1)英文单词的分隔符可能是空格、标
17、点符号或特殊符号,使用replace()方法将标点符号替换为空格,提高获取单词的准确性。(2)用split()函数拆分字符串,生成单词的列表。(3)逐个读取列表中的单词,重复下面的操作。如果字典(map1)的key值中没有这个单词,word=0,向字典中添加元素,关键字是这个单词,值是1;如果字典的key值中有这个单词,word加1;当列表中的单词全部读取结束后,每个单词出现的次数被放在了字典map1中,map1的key是单词,map1的value是单词出现的次数。(4)字典转换为列表后,排序,输出。软件工程师系列Python3程序设计程序设计5.6 组合数据类型的应用组合数据类型的应用 二二
18、分查找分查找 二分查找要求数据是有序的,程序首先使用列表的sort()函数对数据排序,之后开查找。基本思想是将查找的数值find与中间位置的数据比较:若相等,查找结束;否则,将find值与中间数据比较,如果小于中间数据,在左边的数据区重复二分查找;如果大于中间数据,在右边的数据区重复二分查找。二分查找需要比较的次数为log2n。程序中通过一个标记flag表示查找是否成功,如果成功,跳出while循环。软件工程师系列Python3程序设计程序设计小结 序列操作的运算符和函数。根据不同组合数据类型特点,介绍了循环遍历、增删改查、排序等内容。列表是一种常见的数据结构,是一种 序列结构。元组是无法修改
19、的,其重点在于增删查操作。字典是Python中内置的映射类型,由key-value的键值对组成,通过key可以找到其映射的值value。介绍了字典的增删改查、遍历。软件工程师系列Python3程序设计程序设计作业(1)编写程序,随机生成由英文字符和数字组成的4位验证码。(2)用字典描述学生信息,包括no(学号),name(姓名),score(成绩)等。使用列表存储学生信息的,并根据给定学生姓名,查找学生的信息。(3)使用input函数,输入若干单词,按字典顺序输出单词(如果某个单词出现多次,只输出一次)。(4)利用元组创建一个存储Python关键字的对象,并检测给定的单词是否是Python关键字。软件工程师系列Python3程序设计程序设计