元组由简单的对象组构成,元组与列表相似,但是元组不能在原处修改。元组位置有序的对象集合,元组通过偏移来访问。
为什么有了列表还要元组?元组的不变性提供了某种完整性,可以确保元组在程序中不被另一个引用修改,元组类似于其他语言中的常数。
元组用圆括号表示,对象用逗号分隔。
>>> T = (1,2,3,4,5) #新建元组 >>> T[0],T[2:3] #索引;分片 下标从0开始,有起始位置的包前不包后 (1, (3,)) >>> T[0],T[2:5] (1, (3, 4, 5))
>>> T =('c','a','b','d') >>> sorted(T) #两种排序方法,sort()和sorted() ['a', 'b', 'c', 'd'] #排序以后变成列表 >>> T ('c', 'a', 'b', 'd') >>> T.sort() #不能直接对元组使用sort,因为元组不可变 Traceback (most recent call last): File "<pyshell#7>", line 1, in <module> T.sort() AttributeError: 'tuple' object has no attribute 'sort' >>> tmp = list() >>> tmp = sorted(T) >>> tmp ['a', 'b', 'c', 'd'] >>> T = (1,2,3,4,5,6,2,3,2,5,6,1) #索引与计数 >>> T.index(2) #第一个2出现的位置 1 >>> T.index(2,2) #第二个2出现的位置 6 >>> T.count(2) #总共2出现的次数 3
元组不可改变,但是元组内部嵌套的列表可以改变。
>>> T=(1,[2,3],4) >>> T[1]='ok' Traceback (most recent call last): File "<pyshell#17>", line 1, in <module> T[1]='ok' TypeError: 'tuple' object does not support item assignment >>> T[1][0]='ok' >>> T (1, ['ok', 3], 4)