数据集合体
数据集合体
数据集合体 ·很多程序都需要处理大量类似数据的集 合 -文档中的大量单词, -学校学生,企业客户, -实验得到的数据 回顾:输入一批数据求平均值的程序 -无需保存数据:用累积变量sum和count即可. 一但:求中位数和标准差需要保存全部数据 人用很多独立变量保存? Lu Chaojun,SJTU 2
Lu Chaojun, SJTU 2 数据集合体 • 很多程序都需要处理大量类似数据的集 合. – 文档中的大量单词, – 学校学生,企业客户, – 实验得到的数据, ...... • 回顾:输入一批数据求平均值的程序. – 无需保存数据:用累积变量sum和count即可. – 但:求中位数和标准差需要保存全部数据. ©用很多独立变量保存?
列表 ·有没有一个对象能包含很多数据?Yes! -如range(10)=[0,1,2,3,4,5,6,7,8,9] string.split("This is it.")=[This','is','it'] ·列表(Lis):是一种数据集合体. 一是数据的有序序列 整体用一个名字表示:如seq -各成员通过下标(索引)引用:如sq[3] Lu Chaojun,SJTU 3
Lu Chaojun, SJTU 3 列表 • 有没有一个对象能包含很多数据?Yes! – 如range(10) = [0,1,2,3,4,5,6,7,8,9] – 又如string.split(“This is it.”) = [‘This’ , ’is’ , ’it’] • 列表(List):是一种数据集合体. – 是数据的有序序列 – 整体用一个名字表示:如seq – 各成员通过下标(索引)引用:如seq[3]
列表与字符串 ·回顾:Phon字符串是序列,可通过索引引 用. ·列表与字符串的区别: 一列表的成员可以是任何数据类型,而字符串中 只能是字符; 一列表的成员可修改,而字符串不能修改 Lu Chaojun,SJTU 4
Lu Chaojun, SJTU 4 列表与字符串 • 回顾:Python字符串是序列,可通过索引引 用. • 列表与字符串的区别: – 列表的成员可以是任何数据类型,而字符串中 只能是字符; – 列表的成员可修改,而字符串不能修改
列表与数组 。 很多编程语言提供数组(array)类型, ·Python列表与数组的区别: 一列表是动态的,而数组是定长的 -列表元素可以是混合类型的,而数组元素是同 类型的 Lu Chaojun,SJTU 5
列表与数组 • 很多编程语言提供数组(array)类型. • Python列表与数组的区别: – 列表是动态的,而数组是定长的 – 列表元素可以是混合类型的,而数组元素是同 类型的 Lu Chaojun, SJTU 5
列表操作 ·对字符串的操作也可应用于列表: -合并: -索引:] -分段:[:] -长度:len() -迭代:forin:. 。列表删除: -del : Lu Chaojun,SJTU 6
Lu Chaojun, SJTU 6 列表操作 • 对字符串的操作也可应用于列表: – 合并: + – 重复: * – 索引: [] – 分段: [:] – 长度: len() – 迭代: for in : ... • 列表删除: – del [:]
列表操作(续) ·应用于列表的专门方法: - 追加:.append(x) -排序:.sort() -逆转:.reverse() -查找:.index(x) -插入:.insert(i,) -计数:.count(x) -删除:.remove(x) - 弹出:.pop(i) -隶属:xin Lu Chaojun,SJTU 7
列表操作(续) • 应用于列表的专门方法: – 追加:.append(x) – 排序: .sort() – 逆转: .reverse() – 查找:.index(x) – 插入:.insert(i,x) – 计数:.count(x) – 删除:.remove(x) – 弹出:.pop(i) – 隶属:x in Lu Chaojun, SJTU 7
编程实例:stats.py #stats.py from math import sqrt def 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
编程实例:stats.py # stats.py from math import sqrt def 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 Chaojun,SJTU 9
列表与类结合使用 • 类将一些数据与操作封装成一个对象 • 列表将一些同类对象组合成整体 • 这两者的结合可以表示任意复杂的数据 集合体. Lu Chaojun, SJTU 9
编程实例:对DieViewl的改进 将骰子的7个点构成一个列表.(原为7个独 立变量) 一好处:对整个列表进行操作时,代码变得简单, 因为可以应用循环语句如: for pip in self.pips: pip.setFill(self.background) for i in [0,3,6]: self.pips[i].setFill(self.foreground) -根据掷出的value决定点亮骰子哪些点:可以 使用表驱动的写法(见下页) Lu Chaojun,SJTU 10
编程实例:对DieView的改进 • 将骰子的7个点构成一个列表.(原为7个独 立变量) – 好处:对整个列表进行操作时,代码变得简单, 因为可以应用循环语句.如: for pip in self.pips: pip.setFill(self.background) for i in [0,3,6]: self.pips[i].setFill(self.foreground) – 根据掷出的value决定点亮骰子哪些点:可以 使用表驱动的写法(见下页) Lu Chaojun, SJTU 10