Python电子教案6-1组合数据类型.ppt

上传人:sh****n 文档编号:7457866 上传时间:2020-03-21 格式:PPT 页数:46 大小:941KB
返回 下载 相关 举报
Python电子教案6-1组合数据类型.ppt_第1页
第1页 / 共46页
Python电子教案6-1组合数据类型.ppt_第2页
第2页 / 共46页
Python电子教案6-1组合数据类型.ppt_第3页
第3页 / 共46页
点击查看更多>>
资源描述
第6节 组合数据类型 组合数据类型概述 计算机不仅对单个变量表示的数据进行处理 更通常情况 计算机需要对一组数据进行批量处理 一些例子包括 给定一组单词 python data function list loop 计算并输出每个单词的长度 给定一个学院学生信息 统计一下男女生比例 一次实验产生了很多组数据 对这些大量数据进行分析 序列类型 以单词统计问题为例 在计算一个单词长度之前 程序需要使用一个变量表示这个单词 对于一组单词 需要很多个变量 有两个解决方案 为每个单词分配一个变量 从变量命名上加以区分 例如 a01 a02分别存储第一个 第二个元素 或者 采用一个数据结构存储这组数据 对每个元素采用索引加以区分 例如a表示这组元素 a 0 为该组第一个元素 a 1 为第二个元素 两个方案哪个更好呢 显然 第二个方案更好 假定单词数量是500个而不是5个 使用第一种方法将是灾难 此外 对每个元素单独定义变量 不利于循环操作 序列类型 组合数据类型能够将多个同类型或不同类型的数据组织起来 通过单一的表示使数据操作更有序更容易 根据数据之间的关系 组合数据类型可以分为三类 序列类型 集合类型和映射类型 序列类型是一个元素向量 元素之间存在先后关系 通过序号访问 元素之间不排他 集合类型是一个元素集合 元素之间无序 相同元素在集合中唯一存在 映射类型是 键 值 数据项的组合 每个元素是一个键值对 表示为 key value 序列类型 在Python中 每一类组合数据类型都对应一个或多个具体的数据类型 结合本书章节安排 组合数据类型的分类构成如图6 1所示 其中加粗字体表示Python支持的具体数据类型 序列类型 序列类型是一维元素向量 元素之间存在先后关系 通过序号访问 序列的基本思想和表示方法均来源于数学概念 在数学中 经常给每个序列一个名字 例如 n个数的序列S 可以表示为 S s0 s1 s2 sn 1当需要访问序列中某个特定值时 只需要通过下标标出即可 例如 需要找到第2个元素 即可通过s2获得 这种采用集合名字和下标相结合的表示方法可以简洁地表示序列运算 例如 对上述序列S求和可以表示为 序列类型 由于元素之间存在顺序关系 所以序列中可以存在相同数值但位置不同的元素 序列类型支持成员关系操作符 in 长度计算函数 len 分片 元素本身也可以是序列类型 序列类型 Python语言中有很多数据类型都是序列类型 其中比较重要的是 str 字符串 tuple 元组 和list 列表 字符串 str 可以看成是单一字符的有序组合 属于序列类型 同时 由于字符串类型十分常用且单一字符串只表达一个含义 也被看作是基本数据类型 元组是包含0个或多个数据项的不可变序列类型 元组生成后是固定的 其中任何数据项不能替换或删除 列表则是一个可以修改数据项的序列类型 使用也最灵活 序列类型 序列类型 序列类型有12个通用的操作符和函数 序列类型 元组 tuple 是序列类型中比较特殊的类型 因为它一旦创建就不能被修改 元组类型在表达固定数据项 函数多返回值 多变量同步赋值 循环遍历等情况下十分有用 Python中元组采用逗号和圆括号 可选 来表示 例子如下 序列类型 生成元组只需要使用逗号将元素隔离开即可 例如上例中的元组creature 也可以增加圆括号 但圆括号在不混淆语义的情况下不是必须的 一个元组可以作为另一个元组的元素 可以采用多级索引获取信息 例如元组color中包含了元组creature 可以用color 1 2 获取对应元素值 元组除了用于表达固定数据项外 还常用于如下3种情况 函数多返回值 多变量同步赋值 循环遍历 例子如下 序列类型 序列类型 集合类型与数学中集合的概念一致 即包含0个或多个数据项的无序组合 集合中元素不可重复 元素类型只能是固定数据类型 例如 整数 浮点数 字符串 元组等 列表 字典和集合类型本身都是可变数据类型 不能作为集合的元素出现 Python编译器中界定固定数据类型与否主要考察类型是否能够进行哈希运算 能够进行哈希运算的类型 都可以作为集合元素 Python提供了一种同名的具体数据类型 集合 set 集合类型 由于集合是无序组合 它没有索引和位置的概念 不能分片 集合中元素可以动态增加或删除 集合用大括号 表示 可以用赋值语句生成一个集合 例子如下 集合类型 从上例可以看到 由于集合元素是无序的 集合的打印效果与定义顺序可以不一致 由于集合元素独一无二 使用集合类型能够过滤掉重复元素 set x 函数可以用于生成集合 输入的参数可以是任何组合数据类型 返回结果是一个无重复且排序任意的集合 例子如下 集合类型 集合类型有10个操作符 集合类型 集合类型有10个操作符 集合类型 上述操作符表达了集合类型的4种基本操作 交集 并集 差集 补集 操作逻辑与数学定义相同 集合类型 集合类型有10个操作函数或方法 集合类型 集合类型有10个操作函数或方法 集合类型 集合类型主要用于三个场景 成员关系测试 元素去重和删除数据项 例子如下 集合类型与其他类型最大的不同在于它不包含重复元素 因此 当需要对一维数据进行去重或进行数据重复处理时 一般通过集合来完成 集合类型 映射类型是 键 值 数据项的组合 每个元素是一个键值对 即元素是 key value 元素之间是无序的 键值对 key value 是一种二元关系 源于属性和值的映射关系 键 key 表示一个属性 也可以理解为一个类别或项目 值 value 是属性的内容 键值对刻画了一个属性和它的值 键值对将映射关系结构化 用于存储和表达 在Python中 映射类型主要以字典 dict 体现 映射类型 映射类型 列表类型和操作 列表 list 是包含0个或多个对象引用的有序序列 属于序列类型 与元组不同 列表的长度和内容都是可变的 可自由对列表中数据项进行增加 删除或替换 列表没有长度限制 元素类型可以不同 使用非常灵活 由于列表属于序列类型 所以列表也支持成员关系操作符 in 长度计算函数 len 分片 列表可以同时使用正向递增序号和反向递减序号 可以采用标准的比较操作符 进行比较 列表的比较实际上是单个数据项的逐个比较 列表类型的概念 列表用中括号 表示 也可以通过list 函数将元组或字符串转化成列表 直接使用list 函数会返回一个空列表 例子如下 列表类型的概念 与整数和字符串不同 列表要处理一组数据 因此 列表必须通过显式的数据赋值才能生成 简单将一个列表赋值给另一个列表不会生成新的列表对象 例子如下 列表类型的概念 如上例所示 ls由实际数据赋值产生 为列表对象 将ls赋值给列表lt仅能产生对列表ls的一个新的引用 此时 lt和ls变量都是实际数据 425 BIT 1024 的表示或引用 真实数据只存储一份 因此 修改ls也同时修改了ls 这个关系如图6 5所示 列表类型的概念 列表是序列类型 因此 表6 1中12个序列类型的操作符和函数都可用于列表类型 由于列表是可变的 表6 4给出了列表类型额外的14个常用函数或方法 列表类型的操作 列表类型的操作 上述操作符主要处理列表的增删改等功能 列表类型的操作 上述例子中 vlist 3 从整数变成了字符串 子序列vlist 1 3 被另一个列表赋值修改 需要注意 当使用一个列表改变另一个列表值时 Python不要求两个列表长度一样 但遵循 多增少减 的原则 例子如下 列表类型的操作 vlist 1 3 子序列包含2个元素 对其赋值时却给了3个元素 Python接受这种方式 并不会报错 vlist结果包含了赋值列表中的多余元素 同样 当使用包含更少元素赋值列表时 原列表元素会相应减少 可以通过赋给更多或更少元素实现对列表元素的插入或删除 与元组一样 列表可以通过for in语句对其元素进行遍历 基本语法结构如下forin 语句块 列表类型的操作 列表是一个十分灵活的数据结构 它具有处理任意长度 混合类型的能力 并提供了丰富的基础操作符和方法 当程序需要使用组合数据类型管理批量数据时 请尽量使用列表类型 列表类型的操作 基本统计值计算 统计是计算科学 管理学 社会学 数学等诸多领域的基本问题 相关问题 方法和技术组成了一门学科 即 统计学 Python的列表数据结构能够支持基本的数据统计应用 本节以最简单的统计问题为例 求解一组不定长数据的基本统计值 即平均值 标准差 中位数 一组数据表示为S s0 s1 sn 1 其算术平均值 标准差分别表示为 和 基本统计值的计算 中位数指S中所有数按照从小到大 或者从大到小 顺序排列后 处于最中间位置的数据值 如果n是奇数 则序列S的最中间位置是一个数据 可以表示为sn 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描述如下 输入 从用户输入 文件 网络等途径获取一组数据 处理 适当的数据结构和算法输出 平均值 标准差和中位数 基本统计值的计算 由于平均数 标准差和中位数是三个不同的计算目标 使用函数方式编写计算程序 定义getNum 函数从用户输入获得数据 mean 函数计算平均值 dev 函数计算标准差 median 函数计算中位数 由于该问题不限制用户输入数据的最大个数 所以 使用列表作为承载和存储数据的数据类型 实例代码9 1的全部代码如下 基本统计值的计算 基本统计值的计算 基本统计值的计算 请输入数字 直接输入回车退出 99请输入数字 直接输入回车退出 98请输入数字 直接输入回车退出 97请输入数字 直接输入回车退出 96请输入数字 直接输入回车退出 95请输入数字 直接输入回车退出 平均值 97 0 方差 1 6 中位数 97 该程序运行结果如下 程序整体从第28行开始执行 先后调用getNum mean dev 和median 函数 利用函数的模块化设计能够复用代码并增加代码的可读性 每个函数内部都采用了简单的语句 基本统计值的计算 getNum 函数循环从控制台获得用户输入的数字 当用户输入回车时退出 所有数据保存在nums列表中 列表nums初始化时定义为空 而后根据输入逐渐增加其长度 mean 函数用浮点数s记录列表numbers求和的结果 其中 for语句表示从列表numbers中取出每一个元素 将其加到s变量中 直到numbers中最后一个元素 最后 通过return语句返回平均值 len numbers 用于计算列表的长度 基本统计值的计算 为了计算标准差 需要知道数据的平均值 由于mean 函数已经可以计算平均值 将均值作为一个参数输入标准差dev 函数 dev 函数中 val 2用于计算val的平方 sqrt val 计算val的平方根 基本统计值的计算 根据中位数的定义 中位数median 函数首先使用Python内置函数sorted 对列表numbers进行排序 然后根据中位数定义计算中位数 列表在实现基本数据统计时发挥了很重要的作用 主要表现在 列表是一个动态长度的数据结构 可以根据需求增加或减少元素 列表的一系列方法或操作符为计算提供了简单的元素运算手段 列表提供了对每个元素的简单访问方式及所有元素的遍历方式 基本统计值的计算
展开阅读全文
相关资源
相关搜索

当前位置:首页 > 图纸专区 > 课件教案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!