一、元组和列表的区别
元组与列表和字符串一样,是序列的一种。而元组与列表的唯一不同的元组不能修改,元组和字符串都具有不可变性。列表的可变性可能更方便处理复杂问题,例如更新动态数据等,但很多时候不希望某些处理过程修改对象内容,例如敏感数据,这就需要元组的不可变性。
二、创建元组
(一)使用圆括号()创建
使用圆括号将有序元素括起来,并用逗号隔,可以创建元组。注意,这里的号是必须存在的,即使元组当中只有一个元素,后面也需要有逗号。在Python中定义元组的关健是当中的逗号,圆括号却可以省略。当输出元组时,Python会自动加上一对圆括号。同样,若不向圆括号中传入任何元素,则会创建一个空元组。
tuple1=(1,2.5,('three','four'),[True,5],False) # 使用圆括号( )创建元组 tuple1 tuple2=2,True,'five',3.5 # 省略圆括号 tuple2 empty_tuple=() # 创建空元组 empty_tuple
(二)使用tuple函数创建
tuple 函数能够将其他数据结构对象转换成元组类型。先创建一个列表,将列表传入tuple函数中,再转换成元组,即可实现创建元组。
tuple1=tuple([1,2.5,('three','four'),[True,5],False]) # 使用函数tuple( )将列表转换为元组 tuple1 tuple2=tuple((2,True,'five',3.5)) tuple2 empty_tuple=tuple() empty_tuple
通过上面两部分代码可以看出,创建元组与创建列表的方法极其类似,只是元组使用圆括号来包括元素,而列表使用方括号。
三、元组常用函数和方法
元组是不可变的,类似于对列表元素的增添、删除、修改等处理都不能作用在元组对象上,但元组属于序列类型数据结构,因此可以在元组对象上进行元素索引访问提取和切片操作。特别的,对于元组元素的提取,可以使用元组解包简化赋值操作。
(一)元组元素提取
利用序列的索引进行访问提取和切片操作,可以提取元组中的元素和切片。
1、元组索引访问提取
与列表索引访问提取元素一样,只要传人元素索引,就能够获得对应元素。同样,若传入的索引超出元组索引范围,结果会返回一个错误。
tuple3=('China','America','England','France') tuple3[0] # 提取元组第1个元素 tuple3[10] # 传入索引超出元组索引范围
2、元组切片操作提取
类似的,通过操作也可以获取元组的切片,并且无须考虑超出索引范围的问题。
tuple3[-2::-1] # 提取元组倒数第2个元素到左端之间所有元素 tuple3[1:10] # 超出元素索引范围
(二)元组解包
将元组中的各个元素赋值给多个不同变量的操作通常称为元组解包,使用格式为obj_1,0bj_2,……,obj_n=tuple。由于创建元组时可以省略圆括号,因此元组解包可以看成是多条赋值语句的集合。可见,Python在赋值操作上的处理非常灵活,一句简单的元组解包代码就可以实现多条赋值语句的功能。
A,B,C,D=tuple3 # 将元组中各元素分别赋值给对应变量 A C x,y,z=1,True,'one' # 利用元组解包进行多个变量赋值 x z
(三)元组常用方法和函数
相比于列表,由于元组无法修改元素,所以元组的方法和函数相对较少,但仍然能够对元组进行元素位置查询等操作。下表列出了一些常用的元组方法和函数。
# 使用count( )函数进行元素计数 tuple4=('A','D','C','A','C','B','B','A') tuple4.count('B') # 使用index( )函数获取元素在元组中第一次出现的位置索引 tuple4.index('C') # 使用sorted( )对元组元素进行排序 sorted(tuple4) # 使用len( )函数获取元组长度 len(tuple4) # 使用元组加法合并两元组 (1,2,3)+(4,5,6) # 使用元组乘法重复合并元组 (10,20,30,40)*3
四、转换列表为元组并进行取值操作
(一)任务描述
列表和元组都是序列结构,它们本身相似,但又有一点不同的地方。将列表['pen','paper',10,False,2.5]转换为元组类型,并提取出当中的布尔值。
(二)任务分析
可通过如下步骤实现上述任务。
(1)使用方括号创建列表['pen', 'paper',10,False, 2.5],并赋值给变量。
(2)查看变量的数据类型。
(3)将变量转变成 tuple 类型。
(4)查看变量的数据类型,确定是否转换为元组。
(5)查询元组中元素 False 的位置。
(6)提取元素 False 并赋值。
(三)任务实现
根据任务分析,具体步骤如下。
(1)使用方括号创建列表对象['pen', 'paper',10,False, 2.5],并赋值给变量。
(2)使用 type 函数查看此时变量的数据类型。
(3)使用 tuple 函数将变量转变成元组类型。
(4)再次使用 type 函数确定是否完成转换。
(5)使用元组方法 index 分别查询元素 False 的位置索引。
(6)提取元素 False 并赋值。
task_tuple=['pen','paper',10,False,2.5] type(task_tuple) task_tuple=tuple(task_tuple) # 转换列表对象为元组类型 type(task_tuple) # 查看对象的数据类型 Index=task_tuple.index(False) # 查询元素位置索引 bool=task_tuple[Index] # 提取元组元素 print(bool) # 查看提取元素