
3.2 元组
元组和列表概念上其实是一样的,两者最大的区别是元组一旦创建就不能修改,而列表则可以修改。创建元组的语法很简单:如果用逗号分隔了一些值,就会自动创建元组。例如:
>>> 1,2,3 (1,2,3)
输入“1,2,3”,回车后可以发现输出成了(1,2,3),而元组的定义也正是使用()小括号来完成的,即上面的代码自动创建了一个元组。
3.2.1 创建元组
元组创建使用小括号,列表使用方括号,这点不要弄混。下面来看一下元组的几种创建方式:
>>> tup1 = ('zhangsan', 'lisi', 'wangwu', 'zhaoqi' ) >>> tup2 = ('zhangsan', 'lisi', 2017, 1997) >>> tup3 = 'zhangsan', 'lisi', 2017, 1997
上述代码中就是创建元组的三种方法,这里分别创建了三个元组tup1、tup2、tup3并进行了赋值,在后续的代码中就可以直接使用了。
3.2.2 访问元组
元组定义好之后,就可以进行基本操作了。这里首先介绍如何访问元组的元素。
元组中的元素也可以使用索引进行访问,索引从0开始。可以使用负数索引、切片操作,同列表一样,例如:
>>> tup2 = ('zhangsan', 'lisi', 2017, 1997) >>> print(tup2[0]) zhangsan >>> print(tup2[-2]) 2017 >>> print(tup2[1:]) ('lisi', 2017, 1997)
上述代码分别使用索引和切片进行元素访问。
3.2.3 修改元组
前面重点给大家提过醒,元组中的元素值是不允许修改的,如果强制赋值,修改运行会得到异常信息“TypeError: 'tuple' object does not support item assignment”。示例代码如下:
>>> tup2 = ('zhangsan', 'lisi', 2017, 1997) >>> tup2[0]="lisi" Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not support item assignment >>>
代码中定义了元组tup2,并通过索引取值,试图修改索引为0的元素值,回车后即可看见异常信息,提示元组无法修改。
虽然无法修改元组中的值,但是可以对元组进行连接组合,例如:
>>> tup1=("hello","tuple") >>> tup2 = ('zhangsan', 'lisi', 2017, 1997) >>> print(tup1+tup2) ('hello', 'tuple', 'zhangsan', 'lisi', 2017, 1997)
分别定义元组tup1和tup2,使用+号进行拼接,将拼接后的结果输出即得到两个元组的值在一起。
3.2.4 删除元组
元组中的元素是不允许删除的(见图3-8)。因为删除了其中的元素,也就改变了元组。虽然无法删除元组中的元素,但是可以使用del语句删除整个元组,例如:
>>> tup1=("hello","tuple") >>> print(tup1) ('hello', 'tuple') >>> del tup1 >>> print(tup1) Traceback (most recent call last): File "<stdin>", line 1, in <module> NameError: name 'tup1' is not defined
上述代码使用del语句删除了元组tup1,之后tup1将不存在,这时通过print打印tup1的值就会报出异常,提示tup1并不存在。

图3-8 元组中元素不可以删除
3.2.5 元组的内置函数
为了更加方便我们的操作,Python元组提供了一些内置函数(见图3-9),包括计算元组中的元素个数、最大值、最小值、列表转换为元组等。下面来看一些常用的方法。

图3-9 元组内置函数
【方法一】
len():用于计算元组元素个数。例如:
>>> tup1=("hello","tuple") >>> print(len(tup1)) 2
【方法二】
max():用于返回元组中元素最大值。例如:
>>> tup1=(11,44,77) >>> print(max(tup1)) 77
【方法三】
min():返回元组中元素最小值。例如:
>>> tup1=(11,44,77) >>> print(min(tup1)) 11
【方法四】
tuple ():将列表转换为元组。例如:
>>> list=["zhangsan","lisi",1997] >>> tup1=tuple(list) >>> print(tup1) ('zhangsan', 'lisi', 1997) >>> print(type(tup1) <class 'tuple'>