元组可以看做不可变的列表,它有列表的大多数特点。元组常量用圆括号表示,例如,(1,2)、('a','b','abc')都是元组。
元组特点
元组的主要特点如下:
-
元组可包含任意类型的对象。
-
元组是有序的。元组中的对象可通过位置进行索引和分片。
-
元组的大小不能改变,既不能为元组添加对象,也不能删除元组中的对象。
-
元组中的对象也不能改变。
-
与列表类似,元组中存储的是对象的引用,而不是对象本身。
元组的基本操作
元组的基本操作包括创建元组、求长度、合并、重复、迭代、关系判断、索引、分片和矩阵等。
1、创建元组
可用元组常量或tuple()方法来创建元组。例如:
>>> () #创建空的元组对象
()
>>> tuple() #创建空的元组对象
()
>>> (2,) #包含一个对象的元组,这里的逗号不能少
(2,)
>>> (1,2,5,'abc,',[1,2]) #包含不同类型对象的元组
(1, 2, 5, 'abc,', [1, 2])
>>> 1,2,5,'abc',[1,2] #元组常量可以省略括号
(1, 2, 5, 'abc', [1, 2])
>>> (1,2,('a','b')) #元组中可以嵌套元组
(1, 2, ('a', 'b'))
>>> tuple('abcd') #用字符串创建元组,可迭代对象均可用于创建元组
('a', 'b', 'c', 'd')
>>> tuple([1,2,3]) #用列表创建元组
(1, 2, 3)
>>> tuple(x*2 for x in range(5)) #用解析结构创建元组
(0, 2, 4, 6, 8)
>>>
2、求长度
len()函数可用于获得元组长度。例如:
>>> len((1,2,3,4))
4
>>>
3、合并
加法运算可用于合并多个元组。例如:
>>> (1,2)+('ab','cd')+(2.45,)
(1, 2, 'ab', 'cd', 2.45)
>>>
4、重复
乘法运算可用于合并多个重复的元组。例如:
>>> (1,2)*3
(1, 2, 1, 2, 1, 2)
>>>
5、迭代
可用于迭代遍历元组中的哥哥对象。例如:
>>> for x in (1,2,5,'abc',[1,2]):print(x)
...
1
2
5
abc
[1, 2]
>>>
6、关系判断
in操作符可用于判断对象是否属于元组。例如:
>>> 2 in (1,2)
True
>>> 5 in (1,2)
False
>>>
7、索引和分片
可通过位置对元组对象进行索引和分片。例如:
>>> x=tuple(range(10))
>>> x
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9)
>>> x[1]
1
>>> x[-1]
9
>>> x[2:5]
(2, 3, 4)
>>> x[2:]
(2, 3, 4, 5, 6, 7, 8, 9)
>>> x[:5]
(0, 1, 2, 3, 4)
>>> x[1:7:2]
(1, 3, 5)
>>> x[7:1:2]
()
>>> x[7:1:-2]
(7, 5, 3)
>>>
8、矩阵
与列表相似,可用过嵌套的方式用元组来表示不可变的矩阵。例如:
>>> x=((1,2,3),(4,5,6),(7,8,9,)) #嵌套三个子元组
>>> len(x) #元组长度为3,子元组为一个对象
3
>>> x[0]
(1, 2, 3)
>>> x[0][1]
2
>>>
元组方法
元组对象支持两个方法:count()和index()。
1、count()方法
count()方法用于返回指定值在元组出现的次数。例如:
>>> x=(1,2)*3
>>> x
(1, 2, 1, 2, 1, 2)
>>> x.count(1) #返回1在元组中出现的次数
3
>>> x.count(3) #元组不包含指定值时,返回0
0
>>>
2、index(value,[start,[end]])方法
index()方法用于在元组中查找指定值,魏永start和end指定范围时,返回指定值在元组中第一次出现的位置;指定范围时,返回在指定范围内第一次出现的位置。例如:
>>> x=(1,2,3)*3
>>> x
(1, 2, 3, 1, 2, 3, 1, 2, 3)
>>> x.index(2) #默认查找全部元组
1
>>> x.index(2,2) #从偏移量2到元组末尾查找(省略end表示到末尾)
4
>>> x.index(2,2,7) #在范围[2:7]内查询,依然是左闭右开区间(python中的区间一般都是左闭右开)
4
>>> x.index(5) #如果元组不包含指定的值,则出错
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple
>>>
转载于《Python 3 基础教程》-邓英 夏帮贵 主编 2016-10第一版