【文档说明】Python程序设计现代方法第6章-组合数据类型.pptx,共(37)页,1.584 MB,由小橙橙上传
转载请保留链接:https://www.ichengzhen.cn/view-2398.html
以下为本文档部分文字说明:
第6章组合数据类型•序列类型•集合类型•字典类型学习目标了解组合类型的分类12熟悉集合、字典的基本操作熟悉中文分词模块的使用34掌握列表和元组的基本操作目录☞点击查看本节相关知识点序列类型组合数据类型概述☞点击查看本节相关知识点实例8
:生成验证码集合类型☞点击查看本节相关知识点目录中文分词模块-jieba字典实例9:西游记人物出场统计☞点击查看本节相关知识点6.1组合数据类型概述组合数据类型可以将多个数据组织起来,根据数据组织方式的不同,Python的组合数据类型可分成三类:序列类型、集合类型
和映射类型。6.1组合数据类型概述序列类型序列类型来源于数学概念中的数列。数列是按一定顺序排成一列的一组数,每个数称为这个数列的项,每项不是在其它项之前,就是在其它项之后。存储n项元素的数列{an}的
定义如下:{an}=a0,a1,a2,...,a𝑛−1数列定义6.1组合数据类型概述序列类型序列类型来源于数学概念中的数列。数列是按一定顺序排成一列的一组数,每个数称为这个数列的项,每项不是在其它项之前,就是在其它项之后。序列定义序列类型在
数列的基础上进行了拓展,Python中的序列支持双向索引:正向递增索引和反向递减索引,如图所示。-5-4-3-2-11003.14‘Mu12Of’(0,0)[0,1,2]01234反向递减索引正向递增索引6.1组合数据类型概述序列类型分类Python中
的序列主要有三种:字符串:由单个字符组成的不可修改的序列类型。1列表:是一个可以修改的序列类型,使用相对更加灵活。2元组:是一个不可变的序列类型,构建好以后不可以进行任何修改。36.1组合数据类型概述集合类型数学中的集合是指具有某种特定性质的对象汇总而
成的集体,其中构建集合的这些对象称为该集合的元素。集合元素特征:确定性互异性无序性6.1组合数据类型概述Python中的集合Python要求放入集合中的元素必须是不可变类型。不可变类型可变类型整型、浮点型、字符串类型和元组数据分类:列表、字典、集合6.1组合
数据类型概述映射在数学中,设A、B是两个非空集合,若按某个确定的对应法则f,使集合A中的任意一个元素x,在集合B中都有唯一确定的元素y与之对应,则称f为从集合A到集合B的一个映射。映射类型也称作可变的哈希表(散列表),哈希表是一种数据结构,表
中存储存在映射关系的键值对,其中值为实际存储的数据,键为查找数据时使用的关键字。映射类型地址省份城市邮编519088金凤路广东省珠海市AB6.1组合数据类型概述映射在数学中,设A、B是两个非空集合,若按某个确定的对应法则f,使集合A中的任意
一个元素x,在集合B中都有唯一确定的元素y与之对应,则称f为从集合A到集合B的一个映射。字典是Python唯一的内建映射类型,字典的键必须遵守以下两个原则:(1)每个键只能对应一个值,不允许同一个键在
字典中重复出现。(2)键是不可变类型。映射类型地址省份城市邮编519088金凤路广东省珠海市AB6.2序列类型切片要点切片是指对序列截取其中一部分的操作,其语法格式如下:1.截取范围:左闭右开2.步长取值:可正可负,默认值为1切片[起始索引:结束索
引:步长]6.2序列类型步长取值1.步长大于02.步长小于0python012345-6-5-4-3-2-1python012345-6-5-4-3-2-16.2序列类型语法要点•是一个可变的序列•没有长度的限
制•可以包含任意个元素1.列表中的元素使用“[]”包含2.各元素之间使用英文逗号分隔列表创建方式1.[]2.list()函数6.2序列类型创建列表使用[]创建列表1示例>>>list_one=[]>>>list_two=[1,10,55,20,6]>>>lis
t_thr=[10,'word',True,[6,1]]使用list()创建列表,或将元组或字符串转换为列表2>>>list_one=list()>>>words='Python'>>>list(words)>>>tuple_demo=(1,3,5,7,9)>>>list(t
uple_demo)示例6.2序列类型列表操作遍历1语法格式for循环因子in列表:语句块索引和切片2>>>nums=[11,22,33]>>>nums[0]=55>>>nums[55,22,33]>>>nums[0:
2]=[0,1]>>>nums[0,1,33]示例6.2序列类型列表的常见操作常见操作说明len(s)计算序列s的长度(元素个数)min(s)返回序列s中的最小元素max(s)返回序列s中的最大元素list.append()在列表list的末尾添加元素xlist.exte
nd()在列表list中添加列表lx的元素,与+=功能相同list.insert()在列表list索引为i的元素之前插入元素xlistpop()取出并删除列表list中索引为i的元素xList.remove()删除列表list中第一次出现的元素xlist
.reverse()将列表list的元素反转list.clear()删除列表list中的所有元素list.copy()生成新列表,并拷贝列表list中的所有元素list.sort()将列表list中的元素排序6.2序列类型元组的创建方式1.()2.tu
ple()函数使用()创建列表1示例>>>()#创建一个空数组>>>1,#由逗号结尾表示元组>>>(1,)#单个元素的元组>>>(1,2,3)#包含多个元素的元组使用tuple()创建元组,或将字符串转换为元组2>>>tuple()>
>>tuple([1,2,4])>>>tuple('python')示例6.2序列类型元组应用场景表达固定数据函数多返回值多变量同步赋值循环遍历>>>tup=tuple([1,2,4])示例>>>re
turnx,x*x示例>>>x,y=10,20示例>>>forx,yin((10,20),(10,25)):示例6.3实例8:生成验证码实例8:生成验证码需求:验证码是随机生成的、包含多个大写字符、小写字母或数字的随机字符序列。要求编写程序,实
现生成随机六位验证码的功能。分析:•验证码共六位,需生成六个随机字符;•每次生成的随机字符需存储到某数据结构之中;•数据结构应具有可变、有序的特点。6.4集合类型创建集合1.{}2.set()函数使用{}创建集合1示例>>>set_demo
={100,'word',10.5}>>>set_demo使用set创建集合,或将字符串与元组转换为集合2>>>set_one=set('tuple')>>>set_one>>>set_two=set((13,15,17,19))示例6.4集合类型集
合的常见操作常见操作说明S.add(x)往集合S中添加元素x(x不属于S)S.remove(x)若x在集合S中,则删除该元素,不在则产生KeyError异常S.discard(x)若x在集合S中,则删除该元素,不在则不会报错S.pop()随机返回集合S中的一个
元素,同时删除该元素。若S为空,则产生KeyError异常S.clear()删除集合S中的所有元素S.copy()返回集合S的一个拷贝S.isdisjoint(T)若集合S和T中没有相同的元素,则返回True6.4集合类型示例:假设有一个集合为{10,151,33,98,57},分别使用add
()、remove()、pop()和clear()方法给集合添加和删除元素。>>>set_demo={10,151,33,98,57>>>set_demo.add(61)>>>set_demo>>>set_demo.remove(151)>>>set_de
mo>>>set_demo.pop()>>>set_demo>>>set_demo.clear()>>>set_demo6.4集合类型集合关系测试集合间的关系操作ABA|B(并集)AA-B(差集)BA&B(交集)A^B(补集)
6.4集合类型集合关系测试常见操作说明S|TS.union(T)返回一个新集合,该集合包含属于S和T的所有元素S-TS.difference(T)返回一个新集合,该集合包含属于集合S但不属于集合T的元素S&TS.intersecti
on(T)返回一个新集合,该集合包含同时属于集合S和T的元素S^TS.symmetric_difference(T)返回一个新集合,该集合包含集合S和T中的元素,但不包含同时属于两者的元素S|=TS.up
date(T)更新集合S,该集合包含集合S和T所有的元素S-=TS.difference_update(T)更新集合S,该集合包含在集合S中但不属于集合T的元素S&=TS.intersection_update
(T)更新集合S,该集合包含同时属于集合S和T的元素S^=TS.symmetric_difference_update(T)更新集合S,该集合包含集合S和T中的元素,但不包含同时属于两者的元素6.4集合类型集合关系测试子
集与超集Python中使用比较运算符可以用来检查某个集合是否为其它集合的子集或者超集,其中:•“<”或者“<=”运算符用于判断真子集和子集;•“>”和“>=”运算符用于判断的是真超集和超集。>>>set_one=set('what
')>>>set_two=set('hat')>>>set_one<set_two>>>set_one>set_two示例6.5字典字典类型介绍在编程中,通过“键”查找“值”的过程称为映射。字典是典型的映射类型,其中存放的是多个键值对。>>>users={'A':'123','B':'135',
'C':'680'}>>>users['C']#访问键对应的值>>>users['A']='1*5@'#修改键对应的值示例字典的创建Python中使用“{}”包含键值对以创建字典,字典中各个元素之间通过逗号分隔,语法格式如下:{
键1:值1,键2:值2,.......键N:值N}字典元素的访问与修改使用“字典变量[键]”的形式可以查找字典中与“键”对应的值;使用赋值运算符可以动态修改字典中的值。6.5字典通过操作键增加字典元素>>>contact
s={'Tom':'123456','Jerry':'456789'}>>>contacts{'Tom':'123456','Jerry':'456789'}>>>contacts['Jane']='789012'>>>contacts{'Tom':'123456','Jerry':'
456789','Jane':'789012'}示例6.5字典字典的常见操作常见操作说明d.keys()返回字典d中所有的键信息d.values()返回字典d中所有的值信息d.items()返回字典d中所有的键值对信息d.get(key[,default])若键存在于字典d中返回其对应
的值,否则返回默认值d.clear()清空字典d.pop(key[,default])若键存在于字典d中返回其对应的值,同时删除键值对,否则返回默认值d.popitem()随机删除字典d中的一个键值对deld[key]删除字典d中的某键值对len(d)返回字典d中元素的个数min(d)返回
字典d中最小键所对应的值max(d)返回字典d中最大键所对应的值字典类型也支持使用保留字in,来判断某个键是否存在于字典中,如果键存在,则返回True,否则返回False。6.6中文分词模块-jieba中文分词中文分词是指将一个汉字序列切分成一个一个单独的词,也就是说将连续的字序列按照一
定的规范重新组合成词序列的过程,其作用就是将用户输入的中文语句或语段拆成若干汉语词汇。示例:我是一个学生我是一个学生6.6中文分词模块-jieba中文分词模块——jiebapipinstalljieba/pip3installjieba安装jieba导入jiebaim
portjiebajieba模块的分词模式精确模式全模式搜索引擎模式6.6中文分词模块-jieba常用分词函数——jieba.cut()jieba.lcut()函数需要接收如下三个参数:•sentence,需要分词的字符串。•cut_all,
控制是否采用全模式。若设为True,代表按照全模式进行分词;若设为False,代表按照精确模式进行分词。•HMM,控制是否使用HMM(HiddenMarkovModel,隐马尔可夫模型)。中文分词函数——cut_for_search()cut_for_search()函数接收两个参数——sen
tence和HMM6.6中文分词模块-jiebaseg_list=jieba.cut("我来到北京清华大学",cut_all=True)print("【全模式】:"+"/".join(seg_list))seg_list=ji
eba.cut("我来到北京清华大学",cut_all=False)print("【精确模式】:"+"/".join(seg_list))seg_list=jieba.cut_for_search("小明硕士毕业于中国科学院计算所,后在日本京都大学深造")print("【搜索引擎模式】
:"+",".join(seg_list))示例:分别采用三种模式对中文进行分词操作6.7实例9:西游记人物出场统计实例9:《西游记》人物出场统计需求:《西游记》中主要有四个角色:唐僧、孙悟空、猪八戒和沙僧,这些角色中哪个才是男主角呢?案例需统计角色的出场次数,再按出场次数对角色排
序,查看哪个角色排在首位。分析:•本案例分析的文件中存储的是汉语小说,若要统计小说中每个词语的频率,需要先对中文进行分词操作。•在开发程序之前,需要先准备好《西游记》这本书的电子文件。•准备好资料文件以后,需要使用Python的读取文件功能先把文件中的内容转换成字
符串。•分析从文件内容转换而来的字符串并分词,统计角色出场次数并排序。6.8本章小结•本章主要讲解了组合数据类型:序列类型、集合类型和映射类型,首先讲解了序列类型的内容,包括序列通用操作、列表和元组的基本操作,其次讲解了集合类型,包括集合
的基本操作和集合关系测试,然后讲解了映射类型——字典,包括字典类型的介绍和字典的操作,最后讲解了中文分词模块——jieba。•通过本章的学习,希望读者能够掌握各种数据类型的特点,能够在实际编程中合理地运用它们。