资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,二级,三级,四级,五级,*,Lu Chaojun,SJTU,*,大量数据的表示和处理,数据复杂性,简单数据,单个数据,无内部结构,(,不可分,原子,),复杂数据,由多个相关数据组成,可用集合体类型表示,单个,但有内部结构,可用面向对象的类刻画,2,2,2,3,3,3,数据集合体,大量同类型数据组成一个整体,一次物理实验得到的大批数据,一个文档中的大量单词,一个画布上的所有图形,一个学校里的所有学生,.,Python,提供集合体数据类型,:list,tuple,dict,set,file,4,4,4,数据结构,构成一个整体的大量数据成员一般是,相关的,即其间存在某种逻辑关系,不但要表示各数据成员,还要表示其间逻辑关系,逻辑关系可以体现在存储结构中,例如,:,字符串,HELLO,连续存储的序列结构即可表示,5,个字符间的关系,分散独立存储,5,个字符,则无法表示其间关系,存储结构必须有利于对数据的操作,序列,序列,:,多个数据项按次序排列而形成的集合体数据,次序是排列先后次序,并非数据项的值的比较,Python,的,str,list,tuple,都是序列,5,5,5,8,8,8,例,:,字符串对象方法,s=I think,therefore I am.,s.count(I),2,s.find(re),12,(s.lower().replace(i,I),I thInk,therefore I am.,s.split(),I,think,therefore,I,am.,s.islower(),False,9,9,9,列表,回顾,:Python,列表是由多个数据项组成的序列,可通过索引引用列表中的数据,.,Python,列表的特点,:,列表的成员可以是任何数据类型,;,列表的成员可以修改,ai=x,ai:j=b,del ai,del ai:j,列表对象,Python,将列表实现为对象,并提供了很多方法,.,10,例,:,列表对象的方法,a=Irrational,3.14,2.718,pi and e,a.sort(),a,3.14,2.718,Irrational,pi and e,a0.reverse(),a,2.718,3.14,Irrational,pi and e,a.insert(2,number),a,2.718,3.14,Irrational,number,pi and e,print a.pop(0),2.718,3.14,a,Irrational,number,pi and e,11,编程案例,:,统计程序,(1),统计指标,累积型,:,如总和,.,可以累积计算,sum=0,data=raw_input(,输入新数据,:),while data!=:,x=eval(data),sum=sum+x,整体型,:,如中位数,.,不能累积计算,只能在获得全体数据后计算,.,中位数,一组数据按从小到大(或从大到小)的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数),12,编程案例,:,统计程序,(2),#statistics.py,def getInputs():,def sum(aList):,def mean(aList):,def median(aList):,def main():,data=getInputs(),sigma=sum(data),xbar=mean(data),med=median(data),print.,main(),13,元组,回顾,:,元组也是序列,适用所有序列操作,.,元组的特点,:,不能修改,若序列创建后就不再改变,则可表示为元组:效率高,防止误操作,.,Python,也将元组实现为对象,.,方法,:,.index(x),.count(x),tuple(),可将字符串和列表转换成元组,.,14,例,:,元组,x=1,2,3#,将元组,(,省略了括号,),赋值给,x,x,(1,2,3),x,y,z=1,2,3#,实为元组赋值,x,1,y,z,(2,3),t=(Lucy,(Math,90),t11,90,tuple(hello),(h,e,l,l,o),15,集合,:,无序集合体,Python,提供,set,类型,元素无序,元素不重复,set,值的创建:,用,.,用,set(.):,可将字符串,列表,元组转换成集合,空集,:set(),而非,16,例,:,集合值的创建,1,2,3,set(1,2,3),s=1,1,2,2,2,3,3,s,set(1,2,3),set(set),set(s,e,t),set(1,1,1,2,1),set(1,2),set(1,2,1,1,2,3,4),set(1,2,3,4),set(),set(),17,集合运算,基本就是数学中的集合运算,18,例,:,集合运算,s1=1,2,3,4,5,s2=2,4,6,8,6 in s1,False,s1|s2,set(1,2,3,4,5,6,8),s1&s2,set(2,4),s1-s2,set(1,3,5),s1|=s2,s1,set(1,2,3,4,5,6,8),len(s2),4,19,集合对象,Python,以面向对象方式实现,set,20,字典,:,无序集合体,在集合体中查找数据,:,序列采用索引查找,:,根据位置检索,.,字典采用关联查找,:,根据给定数据检索与之关联的数据,.,字典类型,dict:“,键,-,值对,”,的无序集合,.,给定,键,查找与之关联的,值,存储,:,按内部最有效的方式,不保持创建顺序,.,键类型常用字符串,整数,;,值类型则任意,.,21,字典的操作,字典创建,d=k,1,:v,1,k,2,:v,2,.,k,n,:v,n,或,dict(),检索,:,从,k,i,检索,v,i,dk,i,值可修改,d,k,i,=,22,例,:,字典创建,d=Lucy:1234,Tom:5678,Mary:1357,print d,Mary:1357,Lucy:1234,Tom:5678,d1=dict(name=Lucy,age=8,hobby=(bk,gm),d1,hobby:(bk,gm),age:8,name:Lucy,d2=dict(5,1),Worker,(6,1),Child,(7,1),CPC),d2,(5,1):Worker,(6,1):Child,(7,1):CPC,23,例,:,字典检索,d1name,Lucy,d1age,8,d1hobby,(bk,gm),d1gender,Traceback(most recent call last):,File,line 1,in,d1gender,KeyError:gender,d2(6,1),Child,d27,1,CPC,24,例,:,字典修改,修改与指定键对应的值,如果指定的键不存在,则相当于添加键值对,d1age=9,d1,hobby:(bk,gm),age:9,name:Lucy,d1gender=F,d1,hobby:(bk,gm),age:9,name:Lucy,gender:F,删除键值对,del dk,25,字典对象的方法,Python,将字典实现为对象,支持的方法,:,键存在性,:.has_key(),键列表,:.keys(),值列表,:.values(),键值对列表,:.items(),清空字典,:.clear(),26,例,:,字典对象的方法,d1.keys(),hobby,age,name,gender,d1.values(),(bk,gm),9,Lucy,F,d1.items()0:2,(hobby,(bk,gm),(age,9),d1.has_key(gender),True,27,End,28,
展开阅读全文