Python程序设计现代方法第6章-组合数据类型_第1页
Python程序设计现代方法第6章-组合数据类型_第2页
Python程序设计现代方法第6章-组合数据类型_第3页
Python程序设计现代方法第6章-组合数据类型_第4页
Python程序设计现代方法第6章-组合数据类型_第5页
已阅读5页,还剩36页未读 继续免费阅读

下载本文档

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

文档简介

1、第6章 组合数据类型序列类型集合类型字典类型学习目标了解掌握熟悉熟悉了解组合类型的分类12熟悉集合、字典的基本操作熟悉中文分词模块的使用34掌握列表和元组的基本操作目录点击查看本节相关知识点序列类型6.26.1组合数据类型概述点击查看本节相关知识点6.3实例8:生成验证码6.4集合类型点击查看本节相关知识点目录中文分词模块-jieba6.66.5字典6.7实例9:西游记人物出场统计点击查看本节相关知识点知识架构6.1 组合数据类型概述1序列类型2集合类型3映射类型知识架构1切片2列表3元组6.2 序列类型知识架构6.4 集合类型1集合的常见操作2集合关系测试知识架构6.5 字典1字典类型介绍2

2、字典的常见操作6.1 组合数据类型概述组合数据类型可以将多个数据组织起来,根据数据组织方式的不同,Python的组合数据类型可分成三类:序列类型、集合类型和映射类型 。6.1 组合数据类型概述序列类型序列类型来源于数学概念中的数列。数列是按一定顺序排成一列的一组数,每个数称为这个数列的项,每项不是在其它项之前,就是在其它项之后。数列定义6.1 组合数据类型概述序列类型序列类型来源于数学概念中的数列。数列是按一定顺序排成一列的一组数,每个数称为这个数列的项,每项不是在其它项之前,就是在其它项之后。序列定义序列类型在数列的基础上进行了拓展,Python中的序列支持双向索引:正向递增索引和反向递减索

3、引,如图所示。-5-4-3-2-11003.14Mu12Of(0,0)0,1,201234反向递减索引正向递增索引6.1 组合数据类型概述序列类型分类Python中的序列主要有三种:字符串:由单个字符组成的不可修改的序列类型。1列表:是一个可以修改的序列类型,使用相对更加灵活。2元组:是一个不可变的序列类型,构建好以后不可以进行任何修改。36.1 组合数据类型概述集合类型数学中的集合是指具有某种特定性质的对象汇总而成的集体,其中构建集合的这些对象称为该集合的元素。集合元素特征:确定性互异性无序性6.1 组合数据类型概述Python中的集合Python要求放入集合中的元素必须是不可变类型。不可变

4、类型可变类型整型、浮点型、字符串类型和元组数据分类:列表、字典、集合6.1 组合数据类型概述映射在数学中,设A、B是两个非空集合,若按某个确定的对应法则f,使集合A中的任意一个元素x,在集合B中都有唯一确定的元素y与之对应,则称f为从集合A到集合B的一个映射。映射类型也称作可变的哈希表(散列表),哈希表是一种数据结构,表中存储存在映射关系的键值对,其中值为实际存储的数据,键为查找数据时使用的关键字。映射类型地址省份城市邮编519088金凤路广东省珠海市AB6.1 组合数据类型概述映射在数学中,设A、B是两个非空集合,若按某个确定的对应法则f,使集合A中的任意一个元素x,在集合B中都有唯一确定的

5、元素y与之对应,则称f为从集合A到集合B的一个映射。字典是Python唯一的内建映射类型,字典的键必须遵守以下两个原则:(1)每个键只能对应一个值,不允许同一个键在字典中重复出现。(2)键是不可变类型。映射类型地址省份城市邮编519088金凤路广东省珠海市AB6.2 序列类型切片要点切片是指对序列截取其中一部分的操作,其语法格式如下:截取范围:左闭右开步长取值:可正可负,默认值为1切片起始索引:结束索引:步长6.2 序列类型步长取值步长大于0步长小于0python012345-6-5-4-3-2-1python012345-6-5-4-3-2-16.2 序列类型语法要点是一个可变的序列没有长度

6、的限制可以包含任意个元素列表中的元素使用“”包含各元素之间使用英文逗号分隔列表创建方式list()函数6.2 序列类型创建列表使用创建列表1示 例 list_one = list_two = 1, 10, 55, 20, 6 list_thr = 10, word, True, 6, 1使用list()创建列表,或将元组或字符串转换为列表2 list_one = list() words = Python list(words) tuple_demo = (1, 3, 5, 7, 9) list(tuple_demo)示 例6.2 序列类型列表操作遍历1语法格式for 循环因子 in 列表:

7、语句块索引和切片2 nums = 11, 22, 33 nums0 = 55 nums55, 22, 33 nums0:2 = 0, 1 nums0, 1, 33示 例6.2 序列类型列表的常见操作常见操作说明len(s)计算序列s的长度(元素个数)min(s)返回序列s中的最小元素max(s)返回序列s中的最大元素list.append()在列表list的末尾添加元素xlist.extend()在列表list中添加列表lx的元素,与+=功能相同list.insert()在列表list索引为i的元素之前插入元素xlistpop()取出并删除列表list中索引为i的元素xList.remove(

8、)删除列表list中第一次出现的元素xlist.reverse()将列表list的元素反转list.clear()删除列表list中的所有元素list.copy()生成新列表,并拷贝列表list中的所有元素list.sort()将列表list中的元素排序6.2 序列类型元组的创建方式()tuple()函数使用()创建列表1示 例 () # 创建一个空数组 1, # 由逗号结尾表示元组 (1, ) # 单个元素的元组 (1, 2, 3) # 包含多个元素的元组使用tuple()创建元组,或将字符串转换为元组2 tuple() tuple(1, 2, 4) tuple(python)示 例6.2

9、序列类型元组应用场景表达固定数据函数多返回值多变量同步赋值循环遍历 tup = tuple(1, 2, 4)示 例 return x, x*x示 例 x, y = 10, 20示 例 for x, y in (10, 20), (10, 25):示 例6.3 实例8:生成验证码实例8:生成验证码需求:验证码是随机生成的、包含多个大写字符、小写字母或数字的随机字符序列。要求编写程序,实现生成随机六位验证码的功能。分析:验证码共六位,需生成六个随机字符;每次生成的随机字符需存储到某数据结构之中;数据结构应具有可变、有序的特点。6.4 集合类型创建集合set()函数使用创建集合1示 例 set_de

10、mo = 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中的所

11、有元素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_demo set_demo.pop() set_demo set_demo.clear() set_demo6.4 集合类型集合关系测试集合间的关系操作ABA|

12、B(并集)AA-B(差集)BA&B(交集)AB(补集)6.4 集合类型集合关系测试常见操作说明S|TS.union(T)返回一个新集合,该集合包含属于S和T的所有元素S-T S.difference(T)返回一个新集合,该集合包含属于集合S但不属于集合T的元素S&T S.intersection(T)返回一个新集合,该集合包含同时属于集合S和T的元素STS.symmetric_difference(T)返回一个新集合,该集合包含集合S和T中的元素,但不包含同时属于两者的元素S|=TS.update(T)更新集合S,该集合包含集合S和T所有的元素S-=TS.difference_update(T

13、)更新集合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_one set_two示 例

14、6.5 字典字典类型介绍在编程中,通过“键”查找“值”的过程称为映射。字典是典型的映射类型,其中存放的是多个键值对。 users = A: 123, B: 135, C: 680 usersC # 访问键对应的值 usersA = 1*5 # 修改键对应的值示 例字典的创建Python中使用“”包含键值对以创建字典,字典中各个元素之间通过逗号分隔,语法格式如下:键1:值1, 键2:值2,. 键N:值N字典元素的访问与修改使用“字典变量键”的形式可以查找字典中与“键”对应的值;使用赋值运算符可以动态修改字典中的值。6.5 字典通过操作键增加字典元素 contacts = Tom: 123456,

15、 Jerry: 456789 contactsTom: 123456, Jerry: 456789 contactsJane = 789012 contactsTom: 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中返回其对应的值,同

16、时删除键值对,否则返回默认值d.popitem()随机删除字典d中的一个键值对del dkey删除字典d中的某键值对len(d)返回字典d中元素的个数min(d)返回字典d中最小键所对应的值max(d)返回字典d中最大键所对应的值字典类型也支持使用保留字in,来判断某个键是否存在于字典中,如果键存在,则返回True,否则返回False。6.6 中文分词模块-jieba中文分词中文分词是指将一个汉字序列切分成一个一个单独的词,也就是说将连续的字序列按照一定的规范重新组合成词序列的过程,其作用就是将用户输入的中文语句或语段拆成若干汉语词汇。示例:我是一个学生我是一个学生6.6 中文分词模块-jie

17、ba中文分词模块jiebapip install jieba/pip3 install jieba安装jieba导入jiebaimport jiebajieba模块的分词模式精确模式全模式搜索引擎模式6.6 中文分词模块-jieba常用分词函数jieba.cut()jieba.lcut()函数需要接收如下三个参数:sentence,需要分词的字符串。cut_all,控制是否采用全模式。若设为True,代表按照全模式进行分词;若设为False,代表按照精确模式进行分词。HMM,控制是否使用 HMM(Hidden Markov Model,隐马尔可夫模型)。中文分词函数cut_for_search

18、 ()cut_for_search ()函数接收两个参数sentence和HMM6.6 中文分词模块-jiebaseg_list = jieba.cut(我来到北京清华大学, cut_all=True)print(【全模式】: + / .join(seg_list) seg_list = jieba.cut(我来到北京清华大学, cut_all=False)print(【精确模式】: + / .join(seg_list) seg_list = jieba.cut_for_search(小明硕士毕业于中国科学院计算所,后在日本京都大学深造) print(【搜索引擎模式】: + , .join(seg_list)示例:分别采用三种模式对中文进行分词操作6.7 实例9:西游记人物出场统计实例9:西游记人物出场统计需求:西游记中主要有四个角色:唐僧、孙悟空、猪八戒和沙僧,这些角色中哪个才是男主角呢?案例需统计角色的出场次数,再按出场次数对角色排序,查看哪个角色排在首位。分析:本案例分析的文件中存储的是汉语小说,若要统计小说中每个词语的频率,需要先

温馨提示

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

评论

0/150

提交评论