




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、会计学1Python电子电子(dinz) 组合数据类型组合数据类型第一页,共46页。组合(zh)数据类型概述n第1页/共46页第二页,共46页。计算机不仅对单个变量表示的数据进行处理,更通常情况,计算机需要对一组数据进行批量处理。一些例子包括(boku):给定一组单词python, data, function, list, loop,计算并输出每个单词的长度;给定一个学院学生信息,统计一下男女生比例;一次实验产生了很多组数据,对这些大量数据进行分析;n第2页/共46页第三页,共46页。 以单词统计问题为例,在计算一个单词长度之前,程序需要使用一个变量表示这个单词,对于一组单词,需要很多个变量
2、。有两个解决方案:为每个单词分配一个变量,从变量命名上加以区分,例如(lr):a01、a02分别存储第一个、第二个元素;或者,采用一个数据结构存储这组数据,对每个元素采用索引加以区分,例如(lr)a表示这组元素,a0为该组第一个元素,a1为第二个元素。两个方案哪个更好呢?显然,第二个方案更好。假定单词数量是500个而不是5个,使用第一种方法将是灾难。此外,对每个元素单独定义变量,不利于循环操作。n第3页/共46页第四页,共46页。组合数据类型能够将多个同类型或不同类型的数据组织起来(q li),通过单一的表示使数据操作更有序更容易。根据数据之间的关系,组合数据类型可以分为三类:序列类型、集合类
3、型和映射类型。序列类型是一个元素向量,元素之间存在先后关系,通过序号访问,元素之间不排他。集合类型是一个元素集合,元素之间无序,相同元素在集合中唯一存在。映射类型是“键-值”数据项的组合(zh),每个元素是一个键值对,表示为(key, value)。n第4页/共46页第五页,共46页。在Python中,每一类组合数据类型都对应一个或多个(du )具体的数据类型,结合本书章节安排,组合数据类型的分类构成如图6.1所示,其中加粗字体表示Python支持的具体数据类型。n第5页/共46页第六页,共46页。序列类型是一维元素向量,元素之间存在先后关系,通过序号访问。序列的基本思想和表示方法均来源于数学
4、概念。在数学中,经常给每个序列一个名字,例如,n个数的序列S,可以表示为: S=s0, s1 , s2, . , sn-1当需要访问序列中某个特定值时,只需要通过下标标出即可。例如,需要找到第2个元素,即可通过s2获得。这种采用集合名字和下标相结合的表示方法可以简洁地表示序列运算,例如,对上述(shngsh)序列S求和可以表示为:1-n0Siin第6页/共46页第七页,共46页。由于元素之间存在顺序关系,所以序列中可以存在相同数值但位置不同的元素。序列类型(lixng)支持成员关系操作符(in)、长度计算函数(len())、分片(),元素本身也可以是序列类型(lixng)。n第7页/共46页第
5、八页,共46页。Python语言中有很多数据类型都是序列类型,其中比较重要的是:str(字符串)、tuple(元组)和list(列表)。字符串(str)可以看成是单一字符的有序组合,属于序列类型。同时,由于字符串类型十分常用且单一字符串只表达一个含义,也被看作是基本数据类型。元组是包含0个或多个数据项的不可变序列类型。元组生成后是固定的,其中任何数据项不能替换或删除(shnch)。列表则是一个可以修改数据项的序列类型,使用也最灵活 n第8页/共46页第九页,共46页。n第9页/共46页第十页,共46页。序列类型(lixng)有12个通用的操作符和函数操作符操作符描述描述x in s如果如果x是
6、是s的元素,返回的元素,返回True,否则返回,否则返回Falsex not in s如果如果x不是不是s的元素,返回的元素,返回True,否则返回,否则返回Falses + t连接连接s和和ts * n 或或 n * s将序列将序列s复制复制n次次si索引,返回序列的第索引,返回序列的第i个元素个元素si: j分片,返回包含序列分片,返回包含序列s第第i到到j个元素的子序列(不包含第个元素的子序列(不包含第j个元素)个元素)si: j: k步骤分片,返回包含序列步骤分片,返回包含序列s第第i到到j个元素以个元素以j为步数的子序列为步数的子序列len(s)序列序列s的元素个数(长度)的元素个数
7、(长度)min(s)序列序列s中的最小元素中的最小元素max(s)序列序列s中的最大元素中的最大元素s.index(x, i, j)序列序列s中从中从i开始到开始到j位置中第一次出现元素位置中第一次出现元素x的位置的位置s.count(x)序列序列s中出现中出现x的总次数的总次数n第10页/共46页第十一页,共46页。元组(tuple)是序列类型中比较特殊的类型,因为它一旦创建就不能被修改。元组类型在表达固定数据项、函数多返回值、多变量同步赋值、循环遍历等情况(qngkung)下十分有用。Python中元组采用逗号和圆括号(可选)来表示,例子如下。n第11页/共46页第十二页,共46页。生成元
8、组只需要使用逗号将元素隔离开即可,例如上例中的元组creature,也可以增加圆括号,但圆括号在不混淆语义的情况下不是必须的。 一个元组可以作为另一个元组的元素,可以采用多级索引(suyn)获取信息,例如元组color中包含了元组creature,可以用color-12获取对应元素值。元组除了用于表达固定数据项外,还常用于如下3种情况:函数多返回值、多变量同步赋值、循环遍历,例子如下 n第12页/共46页第十三页,共46页。n第13页/共46页第十四页,共46页。集合类型(lixng)与数学中集合的概念一致,即包含0个或多个数据项的无序组合。集合中元素不可重复,元素类型(lixng)只能是固定
9、数据类型(lixng),例如:整数、浮点数、字符串、元组等,列表、字典和集合类型(lixng)本身都是可变数据类型(lixng),不能作为集合的元素出现。Python编译器中界定固定数据类型(lixng)与否主要考察类型(lixng)是否能够进行哈希运算。能够进行哈希运算的类型(lixng),都可以作为集合元素。Python提供了一种同名的具体数据类型(lixng)集合(set)。n第14页/共46页第十五页,共46页。由于集合是无序组合,它没有(mi yu)索引和位置的概念,不能分片,集合中元素可以动态增加或删除。集合用大括号()表示,可以用赋值语句生成一个集合,例子如下。n第15页/共46
10、页第十六页,共46页。从上例可以看到,由于集合元素是无序的,集合的打印效果与定义顺序可以不一致。由于集合元素独一无二,使用集合类型(lixng)能够过滤掉重复元素。set(x)函数可以用于生成集合,输入的参数可以是任何组合数据类型(lixng),返回结果是一个无重复且排序任意的集合,例子如下。n第16页/共46页第十七页,共46页。集合(jh)类型有10个操作符 操作符操作符描述描述S T 或或 S.difference(T)返回一个新集合,包括在集合返回一个新集合,包括在集合S中但不在集合中但不在集合T中的元素中的元素S-=T或或S.difference_update(T)更新集合更新集合S
11、,包括在集合,包括在集合S中但不在集合中但不在集合T中的元素中的元素S & T或或S.intersection(T)返回一个新集合,包括同时在集合返回一个新集合,包括同时在集合S和和T中的元素中的元素S&=T或或S.intersection_update(T)更新集合更新集合S,包括同时在集合,包括同时在集合S和和T中的元素。中的元素。ST或或s.symmetric_difference(T)返回一个新集合,包括集合返回一个新集合,包括集合S和和T中元素,但不包括同时在其中的元中元素,但不包括同时在其中的元素素S=T或或s.symmetric_difference_update
12、(T)更新集合更新集合S,包括集合,包括集合S和和T中元素,但不包括同时在其中的元素中元素,但不包括同时在其中的元素n第17页/共46页第十八页,共46页。集合(jh)类型有10个操作符 操作符操作符描述描述S|T或或S.union(T)返回一个新集合,包括集合返回一个新集合,包括集合S和和T中所有元素中所有元素S=|T或或S.update(T)更新集合更新集合S,包括集合,包括集合S和和T中所有元素中所有元素S=T或或S.issubset(T)如果如果S与与T相同或相同或S是是T的子集,返回的子集,返回True,否则返回,否则返回False,可以用,可以用S=T或或S.issuperset(
13、T)如果如果S与与T相同或相同或S是是T的超集,返回的超集,返回True,否则返回,否则返回False,可以用,可以用ST判断判断S是是否是否是T的真超集的真超集n第18页/共46页第十九页,共46页。上述操作符表达了集合类型的4种基本操作,交集(jioj)(&)、并集(|)、差集(-)、补集(),操作逻辑与数学定义相同, n第19页/共46页第二十页,共46页。集合类型(lixng)有10个操作函数或方法 函数或方法函数或方法描述描述S.add(x)如果数据项如果数据项x不在集合不在集合S中,将中,将x增加到增加到sS.clear()移除移除S中所有数据项中所有数据项S.copy()
14、返回集合返回集合S的一个拷贝的一个拷贝S.pop()随机返回集合随机返回集合S中的一个元素,如果中的一个元素,如果S为空,产生为空,产生KeyError异常异常S.discard(x)如果如果x在集合在集合S中,移除该元素;如果中,移除该元素;如果x不在,不报错不在,不报错n第20页/共46页第二十一页,共46页。集合(jh)类型有10个操作函数或方法 函数或方法函数或方法描述描述S.remove(x)如果如果x在集合在集合S中,移除该元素;不在产生中,移除该元素;不在产生KeyError异常异常S.isdisjoint(T)如果集合如果集合S与与T没有相同元素,返回没有相同元素,返回True
15、len(S)返回集合返回集合S元素个数元素个数x in S如果如果x是是S的元素,返回的元素,返回True,否则返回,否则返回Falsex not in S如果如果x不是不是S的元素,返回的元素,返回True,否则返回,否则返回Falsen第21页/共46页第二十二页,共46页。集合类型主要用于三个场景:成员(chngyun)关系测试、元素去重和删除数据项,例子如下。集合类型与其他类型最大的不同在于它不包含重复元素,因此,当需要对一维数据进行去重或进行数据重复处理时,一般通过集合来完成。n第22页/共46页第二十三页,共46页。映射类型是“键-值”数据项的组合,每个元素是一个键值对,即元素是(
16、key, value),元素之间是无序的。键值对(key, value)是一种(y zhn)二元关系,源于属性和值的映射关系,键(key)表示一个属性,也可以理解为一个类别或项目,值(value)是属性的内容,键值对刻画了一个属性和它的值。键值对将映射关系结构化,用于存储和表达。在Python中,映射类型主要以字典(dict)体现n第23页/共46页第二十四页,共46页。n第24页/共46页第二十五页,共46页。列表(li bio)类型和操作n第25页/共46页第二十六页,共46页。列表(list)是包含0个或多个对象引用的有序序列,属于序列类型。与元组不同,列表的长度和内容都是可变的,可自由
17、对列表中数据项进行增加、删除或替换。列表没有长度限制,元素类型可以不同,使用(shyng)非常灵活。由于列表属于序列类型,所以列表也支持成员关系操作符(in)、长度计算函数(len())、分片()。列表可以同时使用(shyng)正向递增序号和反向递减序号,可以采用标准的比较操作符(、=、)进行比较,列表的比较实际上是单个数据项的逐个比较。n第26页/共46页第二十七页,共46页。列表用中括号()表示,也可以通过list()函数将元组或字符串转化成列表。直接使用(shyng)list()函数会返回一个空列表,例子如下。n第27页/共46页第二十八页,共46页。与整数(zhngsh)和字符串不同,
18、列表要处理一组数据,因此,列表必须通过显式的数据赋值才能生成,简单将一个列表赋值给另一个列表不会生成新的列表对象,例子如下。n第28页/共46页第二十九页,共46页。如上例所示,ls由实际数据赋值产生,为列表对象。将ls赋值给列表lt仅能产生对列表ls的一个新的引用(ynyng),此时,lt和ls变量都是实际数据425,BIT, 1024的表示或引用(ynyng),真实数据只存储一份,因此,修改ls也同时修改了ls,这个关系如图6.5所示。n第29页/共46页第三十页,共46页。函数或方法函数或方法描述描述lsi = x替换列表替换列表ls第第i数据项为数据项为xlsi: j = lt用列表用
19、列表lt替换列表替换列表ls中第中第i到到j项数据(不含第项数据(不含第j项,下同)项,下同)lsi: j: k = lt用列表用列表lt替换列表替换列表ls中第中第i到到j以以k为步的数据为步的数据del lsi: j删除列表删除列表ls第第i到到j项数据,等价于项数据,等价于lsi: j=del lsi: j: k删除列表删除列表ls第第i到到j以以k为步的数据为步的数据列表(li bio)是序列类型,因此,表6.1中12个序列类型的操作符和函数都可用于列表(li bio)类型。由于列表(li bio)是可变的,表6.4给出了列表(li bio)类型额外的14个常用函数或方法。n第30页/
20、共46页第三十一页,共46页。函数或方法函数或方法描述描述ls += lt或或ls.extend(lt)将列表将列表lt元素增加到列表元素增加到列表ls中中ls *= n更新列表更新列表ls,其元素重复,其元素重复n次次ls.append(x)在列表在列表ls最后增加一个元素最后增加一个元素xls.clear()删除删除ls中所有元素中所有元素ls.copy()生成一个新列表,复制生成一个新列表,复制ls中所有元素中所有元素ls.insert(i, x)在列表在列表ls第第i位置增加元素位置增加元素xls.pop(i)将列表将列表ls中第中第i项元素取出并删除该元素项元素取出并删除该元素ls.
21、remove(x)将列表中出现的第一个元素将列表中出现的第一个元素x删除删除ls.reverse(x)列表列表ls中元素反转中元素反转n第31页/共46页第三十二页,共46页。上述操作符主要处理(chl)列表的增删改等功能 n第32页/共46页第三十三页,共46页。上述例子中,vlist3从整数变成了字符串,子序列vlist1:3被另一个列表赋值修改。需要注意,当使用一个列表改变另一个列表值时,Python不要求两个(lin )列表长度一样,但遵循“多增少减”的原则,例子如下。n第33页/共46页第三十四页,共46页。 vlist1:3子序列包含2个元素,对其赋值时却给了3个元素,Python
22、接受这种方式,并不会报错,vlist结果包含了赋值列表中的多余元素。同样,当使用包含更少元素赋值列表时,原列表元素会相应减少。可以通过赋给更多或更少元素实现对列表元素的插入或删除。与元组一样,列表可以通过forin语句对其元素进行(jnxng)遍历,基本语法结构如下for in :语句块n第34页/共46页第三十五页,共46页。列表是一个十分灵活的数据结构,它具有处理任意长度、混合类型的能力,并提供了丰富的基础操作符和方法。当程序需要使用组合数据类型管理(gunl)批量数据时,请尽量使用列表类型。n第35页/共46页第三十六页,共46页。基本统计(tngj)值计算n第36页/共46页第三十七页
23、,共46页。统计是计算科学、管理学、社会学、数学等诸多领域的基本问题,相关问题、方法和技术组成了一门学科(xuk),即“统计学”。Python的列表数据结构能够支持基本的数据统计应用。本节以最简单的统计问题为例,求解一组不定长数据的基本统计值,即平均值、标准差、中位数。一组数据表示为S=s0, s1, , sn-1,其算术平均值、标准差分别表示为:nmii/)s(1-n0)1/())(s(21-n0nmdii和n第37页/共46页第三十八页,共46页。中位数指S中所有数按照从小到大(或者从大到小)顺序排列后,处于最中间位置的数据值。如果n是奇数,则序列S的最中间位置是一个数据,可以表示为sn/
24、2;如果n是偶数,序列S不存在一个最中间位置,则中位数表示为最中间两个位置数据的平均值,即(sn/2-1+sn/2)/2。 例如:(5,2,1,3,4)的中位数是3,而(4,2,1,3)的中位数是(2+3)/2为2.5。这个问题的IPO描述如下: 输入:从用户输入、文件、网络等途径获取一组数据;处理:适当的数据结构和算法(sun f)输出:平均值、标准差和中位数n第38页/共46页第三十九页,共46页。由于平均数、标准差和中位数是三个不同的计算目标,使用函数方式编写计算程序。定义getNum()函数从用户输入(shr)获得数据,mean()函数计算平均值,dev()函数计算标准差,median()函数计算中位数。由于该问题不限制用户输入(shr)数据的最大个数,所以,使用列表作为承载和存储数据的数据类型。实例代码9.1的全部代码如下。n第39页/共46页第四十页,共46页。n第40页/共46页第四十一页,共46页。n第41页/共46页第四十二页,共46页。请输入数字请输入数字(直接直接(zhji)输入回车退出输入回车退出): 99请输入数字请输入数字(直接直接(zhji)输入回车退出输入回车退出): 98请输入数字请输入数字(直接直接(zhji)输入回车退出输入回车退出): 97请输入数字请输入数字(直接直接(zhji)输入回车退出输入回车退出
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年债权转移信用保证合同模板
- 短期(日结)用工劳动合同5篇
- 厨房电器维保合同
- 2025年合作双方终止协议的合同范文深度分析
- 2025年出租车驾驶员雇佣合同
- 二零二五年度个人销售提成合同(健康生活用品推广)
- 二零二五年度临时用工协议书:影视制作项目临时人员雇佣合同
- 二零二五年度临时炊事员餐饮服务合同
- 二零二五年度山地农业科技园租赁合同
- 二零二五年度幼儿园员工离职无合同赔偿及调解协议
- 人教版2025三下英语单词表
- 职业病卫生监督培训课件
- 2024年张家界市市直事业单位选调工作人员考试真题
- 2025年四川省对口招生(旅游类)考试复习题(附答案)
- 私募股权投资基金基础知识-《私募股权投资基金基础知识》高分通关卷5
- 校园春季传染病预防
- 妇产科学(甲)知到智慧树章节测试课后答案2024年秋浙江大学
- 医院危险化学品安全管理
- 2024年劳动合同(30篇)
- 燃气公司安全生产实施方案
- 全国职业院校技能大赛高职组(生产事故应急救援赛项)选拔赛考试题库500题(含答案)
评论
0/150
提交评论