
2.8 元组
元组(tuple)是Python中另一个重要的序列结构,它与列表相似,也是由一系列元素组成,但它是不可变序列。因此元组元素不能修改(也称为不可变的列表)。元组所有元素都放在一对小括号“()”中,两个元素间使用逗号(,)分隔。通常情况下,元组用于保存程序中不可修改的内容。
2.8.1 元组的创建和删除

1.使用赋值运算符直接创建元组
同Python的变量一样,创建元组时,可以使用赋值运算符“=”直接将一个元组赋值给变量,如下所示。

代码中,tup就是一个元组。另外,Python对元组中的元素和个数没有限制,如下所示也是一个合法的元组。

另外,一个元组的元素还可以包含另一个元组,如下所示。

2.创建空元组
在Python中,也可以创建空的元组,如下所示empty为一个空元组。

3.创建数值元组
在Python中,数值元组很常用。可以使用tuple()函数直接将range()函数循环出来的结果转换为元组,如下所示。

上面代码运行后的结果如下。

4.删除元组
对于已经创建的元组,可以使用del语句将其删除,如下所示为删除之前创建的tup元组。

2.8.2 访问元组元素
1.通过指定索引访问元组元素
与列表一样,元组中的元素是从0开始索引的,即第一个元素的索引为0。如下所示为访问元组的第1个元素。

上述代码中tup [1]表示第2个元素,如果要访问元组第3个元素,应该将程序第2句修改为“print(tup [2])”。如果要访问元组最后一个元素,可以使用一个特殊语法“print(tup [-1])”来实现。上述代码的输出结果如下。

可以看到输出了元组的第2个元素,并且不包括方括号和引号。这就是访问元组元素的方法。
2.通过指定两个索引访问元素
如下所示为指定两个索引作为边界来访问元素。

[0:3]说明指定了第1个索引为元组的第1个元素;第2个索引为元组的第4个元素,但第2个索引不包含在切片内,所以输出了元组的第1~3个元素。
3.只指定第1个索引来访问元素
如下所示为只指定第1个索引作为边界来访问元素。

[2:]说明指定了第1个索引为元组的第3个元素;没有指定第2个索引,那么Python会一直提取到元组末尾的元素,所以输出了元组的第3~6个元素。
4.只指定第2个索引来访问元素
如下所示为只指定第2个索引作为边界来访问元素。

[:4]说明没有指定第1个索引,那么Python会从头开始提取;第2个索引是元组的第5个元素(不包含在切片内),所以输出了元组的第1~4个元素。
5.指定元组倒数元素索引来访问元素
如下所示为只指定元组倒数元素的索引作为边界来访问元素。

[-3:]说明指定了第1个索引为元组的倒数第3个元素;没有指定第2个索引,那么Python会一直提取到元组末尾的元素,所以输出了元组的最后三个元素。
案例15:考试名次查询系统
在IDLE中创建一个名为“查考试排名.py”的文件,然后在文件中创建一个学生总排名的元组,接着让用户用输入学生姓名,再获取学生姓名在元组中对应的索引,然后输出索引+1,即为学生名次,代码如下。

代码中“ranking.index(name)”的意思是获得元素在元组中的索引。name为用户输入的学生姓名。由于元组索引是从0开始的,即第1个元素索引为0,因此排名应该是索引+1。
运行结果如下。

2.8.3 修改元组元素
1.通过重新赋值来修改元组元素
元组是不可变序列,所以不能对它的元素进行修改,但是元组可以进行重新赋值,可以通过重新赋值来修改元组,如下所示。

上述代码的输出结果如下。

2.通过元组连接组合修改元组元素
虽然元组的元素不可修改,但可以通过对元组进行连接组合来实现修改元组,如下所示。

上述代码的输出结果如下。

注意,如果连接的元组只有一个元素,别忘了在元素后面加逗号。