Python 3.6零基础入门与实战
上QQ阅读APP看书,第一时间看更新

2.6 元组

元组是一组有序的元素,各种使用方法与列表类似,只是元组中的元素一旦定义,就不能更改。本节将学习元组的使用,其中学习过程与上一节类似,读者可以通过对比加深印象。

2.6.1 使用元组

元组的定义使用(),列表使用[]。我们知道列表的定义方式有以下两种:

    stu1=['10001','张晓光','男']
    stu1=[0]*width

元组是否也可以这样定义呢?

当然不可以,因为元组的元素是不能改变的,我们无法先使用[0]来定义元素,后期再做更改。因此使用元组的方式是:

    stu1=('10001','张晓光','男')

注 意

也可以使用stu1=()的形式定义空元组,但因为元组内的元素不可以改变,所以这样基本没有意义。

元组还有一种更简单的定义方式。在Python中,默认用逗号间隔的一组元素自动会定义为元组。比如下面这段代码:

    stu1='10001','张晓光','男'

我们直接在Python的交互模式解释器中输出stu1的类型,会显示它是一个tuple(元组),如图2.12所示。

图2.12 输出元组类型

2.6.2 访问元组

访问元素也是使用[]索引的方式,0、正负数都可以,也支持[:]这种切片方式。下面举例说明:

    stu1=('10001','张晓光','男',20)
    print('学生学号:%s,学生年龄:%d'%(stu1[0],stu1[-1]))
    print('学生:',stu1[1:3])

输出结果如下:

    学生学号:10001,学生年龄:20
    学生: ('张晓光', '男')

这里要注意的是,如果stu1是一个列表,用[:]切片形式输出时就显示['张晓光', '男'];如果stu1是一个元组,输出时就显示('张晓光', '男')。读者要注意[]和()的区别。

2.6.3 元组常用的内置函数

因为元组不可修改,所以列表中有的追加、插入、移除等函数,元组都没有。常用的元组函数只有两个:

• count():查找指定元素在元组中出现的次数。

• index():查找指定元素第一次在元组出现的索引值。

举例如下:

    stu1='10001','张晓光','男',20,20
    print('20出现的次数',stu1.count(20))  # 2
    print('20出现的位置',stu1.index(20))  # 3,返回第一次出现的位置

index()除了可以在整个元组中查找,还可以在指定开始位置和结束位置之间的元素块中查找,比如在stu1的最后3个元素中查找。

    stu1.index(20,3,5)  # 3

注 意

不管是在最后3个元素中查找,还是在所有元素中查找,index函数返回的位置都是该元素在整个元组中的位置。

2.6.4 删除元组

元组没有clear清空函数,也不能使用del指定要删除的索引位置。删除元组只需要一句del,如图2.13所示。

    del stu1

图2.13 删除元组

删除stu1元组后,如果再次访问该元组,系统会给出is not defined的未定义错误。

2.6.5 获取元组中的最大值和最小值

也可以使用min、max获取元组中的最小值和最大值。直接看一段代码:

【示例2-24】

输出结果如下:

    4个成绩
    成绩最高: 100
    成绩最低: 59

2.6.6 元组常用运算符

元组的运算符和列表的运算符基本一致,常用的也是+、*、in。

• +:生成一个新的元组。

• *:重复几次。

• in:判断是否包含指定的元素。

还是直接举例:

【示例2-25】

输出结果如下:

    stu1+stu1: ('101', '张晓光', '男', 20)
    stu1*2: ('101', '张晓光', '101', '张晓光')
    101 in stu1: True

2.6.7 元组与列表的转换

在Python中,元组类型和列表类型可以互换。

当将一个列表转换为元组时,使用tuple(seq)函数,此时列表还是列表,会创建一个新元组。当将一个元组转换为列表时,使用list(seq)函数,此时元组还是元组,会创建一个新列表。虽然意思有点拗口,但读者一定要注意,并不是原有的列表或元组发生了根本性的改变,只是创建了一个新对象。

1.列表转元组

列表转元组使用tuple函数:

2.元组转列表

元组转列表使用list函数: