




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、数据集合体Lu Chaojun, SJTU 2Lu Chaojun, SJTU 2 2数据集合体 很多程序都需要处理大量类似数据的集合. 文档中的大量单词, 学校学生,企业客户, 实验得到的数据, . 回顾:输入一批数据求平均值的程序. 无需保存数据:用累积变量sum和count即可. 但:求中位数和标准差需要保存全部数据.用很多独立变量保存?Lu Chaojun, SJTU 3Lu Chaojun, SJTU 3 3列表 有没有一个对象能包含很多数据?Yes! 如range(10) = 0,1,2,3,4,5,6,7,8,9 又如string.split(“This is it.”) = T
2、his,is,it 列表(List):是一种数据集合体. 是数据的有序序列 整体用一个名字表示:如seq 各成员通过下标(索引)引用:如seq3Lu Chaojun, SJTU 4Lu Chaojun, SJTU 4 4列表与字符串 回顾:Python字符串是序列,可通过索引引用. 列表与字符串的区别: 列表的成员可以是任何数据类型,而字符串中只能是字符; 列表的成员可修改,而字符串不能修改.列表与数组 很多编程语言提供数组(array)类型. Python列表与数组的区别: 列表是动态的,而数组是定长的 列表元素可以是混合类型的,而数组元素是同类型的Lu Chaojun, SJTU 5Lu
3、Chaojun, SJTU 6Lu Chaojun, SJTU 6 6列表操作 对字符串的操作也可应用于列表: 合并: + 重复: * 索引: 分段: : 长度: len() 迭代: for in : . 列表删除: del :列表操作(续) 应用于列表的专门方法: 追加:.append(x) 排序: .sort() 逆转: .reverse() 查找:.index(x) 插入:.insert(i,x) 计数:.count(x) 删除:.remove(x) 弹出:.pop(i) 隶属:x in Lu Chaojun, SJTU 7编程实例:stats.py# stats.pyfrom math
4、 import sqrtdef getNumbers():def mean(nums):def stdDev(nums, xbar):def median(nums):def main(): data = getNumbers() xbar = mean(data) std = stdDev(data, xbar) med = median(data) print .if _name_ = _main_: main()Lu Chaojun, SJTU 8列表与类结合使用 类将一些数据与操作封装成一个对象 列表将一些同类对象组合成整体 这两者的结合可以表示任意复杂的数据集合体.Lu Chaoju
5、n, SJTU 9编程实例:对DieView的改进 将骰子的7个点构成一个列表.(原为7个独立变量) 好处:对整个列表进行操作时,代码变得简单,因为可以应用循环语句.如:for pip in self.pips: pip.setFill(self.background)for i in 0,3,6: self.pipsi.setFill(self.foreground) 根据掷出的value决定点亮骰子哪些点:可以使用表驱动的写法(见下页)Lu Chaojun, SJTU 10编程实例:对DieView的改进(续)for pip in self.pips:if value = 1: on =
6、3elif value = 2: on = 0,6elif value = 3: on = 0,3,6elif value = 4: on = 0,2,4,6 elif value = 5: on = 0,2,3,4,6else: on = 0,1,2,4,5,6for i in on: self.pipsi.setFill(self.foreground)onTable = , 3, 2,4, 2,3,4, 0,2,4,6, 0,2,3,4,6, 0,1,2,4,5,6 for pip in self.pips:on = onTablevaluefor i in on: self.pipsi
7、.setFill(self.foreground)这个onTable是不变的,可以作为类的实例变量,由_init_初始化.Lu Chaojun, SJTU 11Lu Chaojun, SJTU 12Lu Chaojun, SJTU 1212编程实例:计算器 程序 = 数据结构的集合 + 处理数据结构的算法的集合 因此:整个应用程序本身可看作对象! 编程实例:计算器. 每个计算器是一个对象.元组 元组:用圆括号包围的一组值. 类似列表但内容不可修改. 例如:创建计算器按钮的代码:bSpecs = (2,1,0), (3,1,.), (1,2,1), (2,2,2), (3,2,3), (4,2,
8、+), (5,2,-), (1,3,4), (2,3,5), (3,3,6), (4,3,*), (5,3,/), (1,4,7), (2,4,8), (3,4,9), (4,4,-),(5,4,C)self.buttons = for (cx,cy,label) in bSpecs:# create the larger = buttonLu Chaojun, SJTU 13字典:无序集合体 列表实现了索引查找:按给定位置检索. 很多应用需要“键-值”查找:按给定的键,检索相关联的值. Python提供字典类型,用来存储“键-值对”. 创建: dict = k1:v1, k2:v2, . ,
9、 kn:vn 检索: dict返回相关联的 值可修改:dict = 键类型常用字符串,整数;值类型则任意. 存储:按内部最有效的方式,不保持创建顺序.Lu Chaojun, SJTU 14字典例 缩略语字典abbr = etc:cetera, cf:confer, ibid:ibidem查找:abbretc返回cetera修改:abbretc = et cetera. 月份映射表month = 1:Jan, 2:Feb, 3:March,4:April显示: print month1增加键值对:month4 = AprilLu Chaojun, SJTU 15字典操作 键存在性:has_key() 键列表:.keys() 值列表:.values() 键值对列表:.items() 删除键值对:del 清空字典:.clear()Lu Chaojun, SJTU 16编程实例:词频统计 统计文档中单词的出现次数. 用字典结构: counts: 用很多累积变量显然不好! 单词首次出现时字典里查不到会出错:try: countsw = countsw + 1except KeyError: countsw = 1Lu Chaojun, SJTU 17编程实例:词频统计(续) 对大文档,为每个单词输出频度没有意义. 如何输出前n个最频繁的单词? 对:列表按频度排序.sort()不行比较
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 健康生活服务平台服务协议
- 水利水电工程的人机协作问题与试题及答案
- 关键路径法考题解析及答案
- 保安消防面试题及答案
- 云网融合考试试题及答案
- 美术课堂管理与激励措施计划
- 制定知识分享机制促进团队学习计划
- 主管的问题解决能力计划
- 解除合同的合规性审核
- 退休活动引导人员返聘合同
- 机械原理课程设计-摇摆式输送机设计说明书
- 附件1:中国联通动环监控系统B接口技术规范(V3.0)
- 隧道吊柱安装作业指导书
- 区域消防安全风险评估规程DB50-T 1114-2021
- 幼教培训课件:《家园共育体系建构与实施策略》
- 安全输血管理制度培训课件
- 小学美术1色彩的情感课件
- 奥沙利铂过敏反应
- 项目部临时动火作业审批表
- 项目质量管理评价表
- 饮料生产公司应急预案汇编参考范本
评论
0/150
提交评论