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函数: