
1.6 元组
元组和列表很像,只是它在定义好以后,不能修改里面的数据。元组用圆括号“()”表示。在创建元组以后,可以对它进行索引、切片和各种运算。这部分内容和列表的基本一样。
1.6.1 元组的创建和删除
使用()、tuple函数和zip函数等创建元组。下面使用“()”创建元组,元组的元素可以是不同类型的数据。

圆括号可以省略,即:

如果元组只有一个元素,则必须在末尾加逗号。例如:

如果不加逗号,Python会把它作为整数处理。

使用tuple函数,可以将其他可迭代对象转换为元组。其他可迭代对象包括字符串、区间、列表、字典、集合等。其他可迭代对象作为tuple函数的参数给出。

使用zip函数,可以将多个列表对应位置的元素组合成元组,并返回zip对象。

使用list函数,可以将zip对象转换为列表。

可见,列表的元素为元组,它们由变量a和b对应位置的元素组合而成。
不能修改或删除元组中的元素,但是可以使用del命令删除整个元组。

1.6.2 索引和切片
元组的索引和切片操作跟列表的相同,可以参阅1.5.3节的内容。与列表不同的是,通过索引和切片将元组中的单个或多个元素提取出来以后,不能修改它们的值。
下面创建一个元组,通过索引提取第1个元素和最后1个元素的数据。这里用到正向提取和反向提取,在正向提取时基数为0,在反向提取时从右向左计数,基数为-1,比如倒数第2个元素的索引号就是-2。

也可以使用元组对象的index方法返回指定元素在元组中第1次出现的位置,位置索引号的基数为0。下面的代码返回元素3在元组中第1次出现的位置。

该方法还可以有第2个参数和第3个参数,指定取值范围的起点和终点。当省略终点时,终点取最后1个元素。下面的代码返回在元组第4个元素到末尾这个范围内元素3第1次出现的位置。

切片操作规则也跟列表的相同,有正向和反向之分,请参阅1.5.3节的内容。

注意:无法修改和删除元组中元素的值。例如,下面的代码试图将元组t中的第2个元素的值改为3时,给出出错信息。

1.6.3 基本运算和操作
使用运算符对指定元组进行操作。下面使用+(加号)连接两个元组。

使用*(乘号)重复扩展给定元组。

使用in或not in判断元组中是否包含或不包含指定元素,如果是则返回True,否则返回False。

使用len函数计算元组的长度,即元组中元素的个数。

使用max函数和min函数返回元组中最大的元素和最小的元素。
