# 8.tuple 元组数据类型
# 元组类型 (Tuple)
元组,称不可变的列表,又被称为只读列表,元组也是Python的基本数据类型之一
元组格式:() 使用小括号 括起来,里面可以放任何数据类型的数据,多个值通过 ,逗号分隔
可查询,可循环,可切片,就是不能改
关于元组不可变,这里指的是:子元素不可变,而子元素内部的元素可变,这要取决于子元素是否是可变对象
**注意:**如果元组只有一个值,一定要在后面在加一个逗号,不然就不是元组
so = (10)
print(type(so))
执行结果:
<class 'int'>
=====================================
so = (10,)
print(type(so))
执行结果:
<class 'tuple'>
# 空元组的格式
在列表中,代表列表的空列表可以直接不写值:变量 = []
但是在元组不行,因为小括号在其它方面也有相对的应用
格式:变量 = tuple()
so = tuple()
print(type(so))
执行结果:
<class 'tuple'>
# 索引
索引也称为下标,在python中索引也是下标是从0开始
反向索引:python中反向索引是从-1开始
索引就是字符串的下标位置
格式:变量[下标值]
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[3])
执行结果:
周芷若
以上的实例,获取到了下标为3的元组数据
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[-3])
执行结果:
林俊杰
以上实例,通过反向索引获取元组中的反向第三位数据,从-1开始算
# 切片
切片可以对元组进行截取取值,从0开始,反向切片从-1开始
反向切片,默认是从左向右切
切片之后类型还是元组类型
特点:起始值可取,结束值不可取
格式:变量[起始位置 : 结束位置]
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[1:3])
执行结果:
('林俊杰', '周润发')
以上实例:通过获取,起始位置为:1 结束位置为:3的值
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[1:3] + so[2:4])
执行结果:
('林俊杰', '周润发', '周润发', '周芷若')
以上实例:能过 + 运算符,把两边的数据合并起来为一个列表
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[:3])
执行结果:
('周杰伦', '林俊杰', '周润发')
以上实例,如果起始位置不填,默认从开头开始
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[2:])
执行结果:
('周润发', '周芷若')
以上实例,如果结束位置不填,默认到结尾
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[:])
执行结果:
("周杰伦", "林俊杰", "周润发", "周芷若")
以上实例,如果起始跟结束位置都不填写,默认从头到尾执行
# 反向切片
反向切片,默认是从左向右切
特点:起始值可取,结束值不可取
格式:变量[起始位置 : 结束位置]
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[-3:-1])
执行结果:
('林俊杰', '周润发')
# 步长
步长,可以在指定范围内,每几个取一个值
取值,取范围中的开头值
反向步长,以右向左方向取值
格式:变量[起始位置 : 结束位置 : 步长]
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[::2])
执行结果:
('周杰伦', '周润发')
以上实例:每走二步,取一个值
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
print(so[::-2])
执行结果:
('周芷若', '林俊杰')
以上实例:反向步长,反向取值
# for循环遍历元组
so = ("周杰伦", "林俊杰", "周润发", "周芷若")
for io in so:
print(io)
执行结果:
周杰伦
林俊杰
周润发
周芷若
# 元组中的列表类型修改数据
元组本身是不可以修改的,但是元组中的列表类型是可以修改,因为只修改了其中的列表数据,并没修改元组本身
so = ("周杰伦", "林俊杰", "周润发",["国","之","烈"], "周芷若")
so[3].append("士")
print(so)
执行结果:
('周杰伦', '林俊杰', '周润发', ['国', '之', '烈', '士'], '周芷若')