1、单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,猎豹网校正在授课,Java,教程,课程提纲,:,Python,元组,元组,实际应用中的元组,1,元组,元组是,Python,中的一个集合类型。元组由简单的对象组构成。元组与列表非常类似,只不能元组不能在原处修改(它们是不可变的),并且通常写成圆括号()中的一列系项。虽然元组不支持任何方法调用,但元组具有列表的大多数属性。,元组的属性:,1.,任意对象的有序集合,与字符串和列表类似,元组是一个位置有序的对象的集合。与列表相同,可以嵌入到任何类别的对象中。,2.,通过偏移存取,同字符串、列表一样,在元组中的元素
2、通过偏移(而不是键)来访问。它们支持所有基于偏移的操作。,3.,属于不可变序列类型,类似于字符串,元组是不可变的,它们不支持应用在列表中任何原处修改操作。与字符串和列表类似,元组是序列,它们支持许多同样的操作。,4.,固定长度、异构、任意嵌套,因为元组是不可变的,在不生成一个拷贝的情况下不能增长或缩短。另一方面,元组可以包含其他的复合对象(例如,列表、字黄和其他元组等),因此支持嵌套。,5.,对象引用的数组,与列表相似,元组最好被认为是对象引用的数组。元组存储指向其他对象的存取点(引用),并且对元组进行索引操作的速度相对较快。,1,元组,常用元组常量和操作,操作,解释,(),一个空的元组,T1
3、0,),创建单个元素的元组,(,非表达式,),T2=(0,Ni,1.2,3),四个元素的元组,T2=0,Ni,1.2,3,另一个四个元素的元组,,T3=(abc,(def,ghi),嵌套元组,T1i,索引,T3ij,索引的索引,T1i:j,分片,len(T1),长度,T1+T2,合并,T2*3,重复,for x in T,迭代,spam in T2,成员关系,2,实际应用中的元组,元组的基本操作,:,元组没有方法,但元组支持字符串和列表的一般序列操作,例如:,(1,2)+(3,4),(1,2,3,4),(1,2)*4,(1,2,1,2,1,2,1,2),T=(1,2,3,4),T0,T1:
4、3,(1,(2,3),元组的特殊语法,:,逗号和圆括号,在创建一个元组时,如果只有一个元素那么要在这个元素后面加一个逗号,因为如果只有一个元素又没有逗号的情况下,这时的圆括号被当成了一个简单的表达式。所以当创建一个只有一个元素的元组时,需要在元素后面加一个逗号。例如:,x=(40),x,40,y=(40,),y,(40,),2,实际应用中的元组,元组的转换及不可变性,:,元组对象本身是不可变的,它不提供字符串、列表、和字典中的方法,如果想对元组进行相关的改变(如排序等),那么需要先将它转换成可变的对象(如列表,实际是生成新的对象),再进行相关的改变后,再生成新的元组返回,例如:,T=(cc,a
5、a,dd,bb),tmp=list(T),tmp.sort(),tmp,aa,bb,cc,dd,T=tuple(tmp),T,(aa,bb,cc,dd),T=(1,2,3,4,5),L=x+20 for x in T,L,21,22,23,24,25,T=(1,2,3,4),T1=spam,Traceback(most recent call last):,File,line 1,in,T1=spam,TypeError:tuple object does not support item assignment,T10=spam,T,(1,spam,3,4),2,实际应用中的元组,为什么有了列表还要元组,:,初学者学习元组的时候,总是会有一个疑问,既然有了列表了,为什么还要元组?其中的原因可能是历史性的。,Python,的创建者接受过数学训练,并提到过把元组看作是简单的对象集合,把列表看成是随时间改变的数据结构。然而,最佳答案是因为元组是不可变的。这提供了某种完整性。一种约束。而列表就没有这样的保证。因此,元组的角类类似于其他语言的,“,常数,”,的声明,元组也可以用在列表无法使用的地方。例如,作为字典键。一些内置操作可能也要求或暗示要使用元组而不是列表。,