一、元组
元组是一种静态的或者说不可变的数据结构,里面的元素按照一定的顺序排列。与列表一样,元组也是序列,唯一的差别在于元组是不能修改的。列表用[]中括号括起,元组用圆括号()括起。
1. 通用的元组操作
1.1 元组的创建
只需在括号中添加元素,并使用逗号隔开即可(不加括号也可以)
>>> t1 = (1, 2, 3)
>>> t2 = 1, 2, 3
>>> type(t2)
<class 'tuple'>
空元组用两个不包含任何内容的圆括号表示
>>> a = ()
>>> a
()
>>> type(a)
<class 'tuple'>
注:元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用。
>>> t1 = (42)
>>> type(t1)
<class 'int'>
>>> t2 = (42,)
>>> type(t2)
<class 'tuple'>
1.2 元组的索引
元组可以使用下标索引来访问元组中的值(0表示第一个元素,-1表示最后一个元素)
>>> t1 = (1, 2, 3)
>>> t1[1]
2
>>> t1[-1]
3
1.3 元组的切片
切片通过构造一个索引号的范围可以同时获得元组中的多个值。第一个元素表示切片开始的地方(包含此索引号),第二个元素表示切片结束的地方(不包含此索引号),第三个元素表示步长,是指当取出前一项时,移动多少个元素去取下一个值(若没有这一项,默认为1),也可使用负数形式的索引号来访问元组
>>> t1 = ('p', 'y', 't', 'h', 'o', 'n')
>>> t1[2:4]
('t', 'h')
>>> t1[2:5:2]
('t', 'o')
>>> t1[-1:0:-2]
('n', 'h', 'y')
1.4 元组的连接和复制
操作符可以被用来连接或复制元组。连接通过“+”来完成,复制通过“*”来完成
“+”操作符可以将两个或者多个元组连接在一起
>>> t1 = ('python', 'c')
>>> t2 = ('java', 'php')
>>> c = t1 + t2
>>> c
('python', 'c', 'java', 'php')
“*”操作符可以用来复制元组
>>> t1 = (1, 2, 3)
>>> t1 * 2
(1, 2, 3, 1, 2, 3)
2. 元组的函数
2.1 len()
用来计算元组的长度
>>> t1 = (1, 2, 3)
>>> len(t1)
3
2.2 max()/min()
当处理数值型的元组时(包括整数和浮点数),可以使用max()和min()函数去找到某一特定元组的最大值和最小值
>>> t1 = (1, 22, 4, 66, -59, 99)
>>> max(t1)
99
>>> min(t1)
-59
2.3 tuple()
将一个序列作为参数,并将其转换为元组。如果参数已经是元组,就原封不动地返回它。
>>> tuple([1, 2, 3])
(1, 2, 3)
>>> tuple('python')
('p', 'y', 't', 'h', 'o', 'n')
>>> tuple((1, 2, 3))
(1, 2, 3)
>>> tuple({1, 2, 3})
(1, 2, 3)
2.4 sorted()
用于将元组排序,并不是改变元组,其返回值为一个列表
>>> a = (1, 5, 3, 2)
>>> t1 = (1, 5, 3, 2)
>>> t2 = sorted(t1)
>>> t1
(1, 5, 3, 2)
>>> t2
[1, 2, 3, 5]
3. 元组的方法
由于元组属于不可变类型,故其只有count()和index()方法。
3.1 count()方法
计算指定元素在元组中出现的次数。若指定元素不存在与元组中则返回0
>>> t1 = (1, 3, 1, 2)
>>> t1.count(1)
2
>>> t1.count(3)
1
>>> t1.count(5)
0
3.2 index()方法
在元组中查找指定元素。若找到则返回从左往右数第一次找到的元素的索引,找不到会报错
>>> t1 = (1, 3, 1, 2)
>>> t1.index(1)
0
>>> t1.index(8)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: tuple.index(x): x not in tuple