一、定义
元组是有序的对象集合,使用小括号( )包围,元素之间用逗号分隔
元组是不可变的,不可以随时添加或删除元素
元组是异构的,可以包含不同类型的数据
元组中允许出现重复元素
二、创建
- 直接使用逗号分隔
- 通过小括号创建
- 通过构造方法tuple()创建
# 直接逗号分隔
t1 = 1,
print(t1) # 输出:(1,)
t1 = 1, "2", True
print(t1) # 输出:(1, "2", True)
# 小括号创建
t2 = ()
print(t2) # 输出:()
t2 = (1, "2", True)
print(t2) # 输出:(1, "2", True)
# 构造方法tuple()创建
t3 = tuple()
print(t3) # 输出:()
t3 = tuple("good") # 字符串、元组、列表、集合、字典等均可
print(t3) # 输出:('g', 'o', 'o', 'd')
# 注意:单元素元组,逗号不可或缺
t4 = 'a',
print(type(t4)) # 输出:<class 'tuple'>
t4 = (1,)
print(type(t4)) # 输出:<class 'tuple'>
t4 = (1)
print(type(t4)) # 输出:<class 'int'>
三、元组使用
1、索引
因为元组是有序的,可以通过索引取到列表中对应位置的值。
- 正向索引,编号从0开始。
- 反向索引,编号从-1开始。
写法:tuple[index]
tup = (1, 2, 3, 4, 5)
print(tup[0]) # 输出:1
print(tup[-1]) # 输出:5
2、切片
在索引的基础上,不只取单个值,可以取元组的一段。
写法:tuple[start: stop: step]
- start:指示开始索引值,默认为0
- stop:指示结束索引值(不包括结束索引值本身),默认取最大索引值。
- step:步长值,默认为1。
注:切片遵循前闭后开原则,strat值从start值本身开始,stop取到stop的前一个值。
tup = tuple("good boy")
print(tup[0:-1:1]) # 输出:['g', 'o', 'o', 'd', ' ', 'b', 'o']
print(tup[2:4]) # 输出:['o', 'd'],省略step
print(tup[:4]) # 输出:['g', 'o', 'o', 'd'],省略start、step
print(tup[2:]) # 输出:['o', 'd', ' ', 'b', 'o', 'y'],省略stop、step
print(tup[::-2]) # 输出:['y', 'b', 'd', 'o'],省略start、stop,逆序、步进2打印。
* 元组的索引和切片的使用方法同列表
四、常用方法
1、index()
返回与目标元素相匹配的首个元素的索引
写法:tuple.index(item)
入参:对象item
返回:对象item的索引值
目标必须在元组中存在,否则会报ValueError错误
tup = ("Java", "Python", "R", "Go")
print(tup.index('Python')) # 输出:1
print(tup.index('P')) # ValueError: tuple.index(x): x not in tuple
2、count()
返回某个元素出现的次数
写法:tuple.count(item)
入参:对象item
返回:对象item出现的次数
tup = ("Java", "Python", "R", "Go", "R", "R")
print(tup.count('R')) # 输出:3
print(tup.count('P')) # 输出:0
五、元组解包
把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中
tup = 1, 2, 3
# 传统逐个赋值的方式
a = tup[0]
b = tup[1]
c = tup[2]
print(a, b, c) # 输出:1 2 3
# 解包方式赋值
a, b, c = tup
print(a, b, c) # 输出:1 2 3