元组结构
元组的介绍— “世间因少年挺身向前,而更加瑰丽”
元组是 Python 中用于存储不可变数据的数据结构,它的特点是有序的、不可修改的。
元组和列表类似,都是用于存储数据的,但是元组一旦被创建之后,其内部的结构就被锁定,任何添加、删除、修改内部的元素都会被程序阻止,产生报错信息。
元组是由括号构成的,和列表一样,可以存储不同类型的数据,来看几个创建元组的例子:
# 元组和由括号直接创建
"牧旗教程"
, "面向新手小白"
, "详细易懂"
)# 可以省略外侧括号创建
10
, 20
, 30
# 使用tuple内置函数将其他类型数据转换为元组
tuple
(["apple"
, "orange"
, banana
])# 元组可以由多种数据类型构成
300
, "Cat"
, True
, [1
, 2
, 3
], None
)需要特殊注意的是:元组里如果只有一个元素,也要保留一个逗号用来标记,因为在 Python 中括号有另外的含义,因此会产生冲突,来看个例子方便理解:
# 如果不加逗号创建一个单元素的元组
6
)print
(x)print
(type
(x))运行代码,结果如下,此时的 x 变量是 int 数字类型:
6
< class 'int' >
使用上面的这种方式创建的变量类型是数字类型,因为括号被计算机认为是数学意义上的括号,所以要用下面的写法:
# 加逗号来创建一个单元素的元组
6
,)print
(x)print
(type
(x))结果如下,可以看出,此时的 x 变量变成了 tuple 元组类型:
(6,)
< class 'tuple' >
通过这种方式,我们就成功创建了一个单元素的元组。
由于元组的不可修改性质,所以数据更为安全,在创建一些固定的数据时要尽量用元组来替代列表,应用比较广泛的地方有坐标、日期、数据库记录、Http请求等。
基本操作
在 Python 中,关于元组的操作模式主要分为以下几类:
操作方式 | 描述 |
---|---|
查询元组元素 | 使用索引或者切片的方式查询元组元素,直接输出结果或者赋值给新的变量。 |
修改元组元素 | 元组不能修改元素,但是可以替换整个元组 |
元组新增元素 | 元组不能新增元素,但是可以替换整个元组 |
元组删减元素 | 元组不能删减元素,但是可以整体删除元组变量。 |
-
查询元组元素
元组元素的查询和列表的查询方式一样,也是分为 索引 和 切片 两种方式。
由于索引和切片是 Python 中的通用概念,所以元组的索引、切片教程和列表的教程中有部分雷同,已经熟练掌握列表的索引和切片的同学可以选择跳过或者再次巩固。
① 索引
索引用于获取元组中的单个元素,写法是在元组后接上方括号 [ ] 在方括号中填入要提取的元素索引位置,让我们来看示例:
# 使用元组定义一个日期
data_time = ("2023"
,"03"
,"02"
,"11"
,"32"
)# 选择 data_time 变量的第二个元素月份
result1 = data_time[1
]# 选择 data_time 变量的最后一个元素分钟
result2 = data_time[-1
]print
(result1)print
(result2)结果如下,可见 date_time 变量的第二个和倒数第一个元素分别被提取了出来:
03
32注意:索引的起始位置是从 0 开始的,第一个元素的索引是0,第二个元素的索引是1,第三个元素的索引是2,以此类推。如果索引号是负数,那么-1代表倒数第一个元素,-2代表倒数第二个元素,以此类推。
② 切片
切片是用来选取多个元素的方式,切片的写法是在字符串后接方括号,在里面分别填入起始索引、终止索引、步长,中间用冒号隔开。
对于元组有以下三点性质要特别注意:
注意事项 描述 切片左闭右开 切片会选择括号最左面的索引,和右面索引值 -1 的索引。 参数可省略 start 不填写默认代表从第一个元素开始选择 ,end 不填写代表切到结尾最后一个元素, step 不填写代表 1 ,也就是每个元素都要选择。 参数可以是负数 如果 start 、end 是负数则代表从后往前开始计算位置,step 是负数代表从右往左进行切片。 让我们通过几个例子来深入了解一下上面提到的几个概念:
# 创建一个元组变量
my_values = ("牧旗教程"
,"专业"
,"免费"
,"详细"
,"面向新手"
,"老少皆宜"
)# 选择第二个元素到第四个元素
value1 = my_values[1
:4
]# 选择第三个元素到倒数第二个元素
value2 = my_values[2
:-1
]# 从第二个元素开始从后往前选择
value3 = my_values[1
::
-1
]# 从第一个元素开始每两个元素选择一次
value4 = my_values[::2
]# 输出结果
print
(value1)print
(value2)print
(value3)print
(value4)运行代码,结果如下:
('专业', '免费', '详细')
('免费', '详细', '面向新手')
('专业', '牧旗教程')
('牧旗教程', '免费', '面向新手') -
修改元组元素
因为元组的性质是内部元素不可修改的,所以我们对元组的修改 只能限制在删除整个元组或者替换整个元组,用变量重新赋值的方式可以替换原来的元组,也就是创建一个新的元组来取代原来的元组,先来看一个替换的例子:
# 先创建一个元组
my_value = ('牧旗'
,'教程'
)# 直接对原有的变量赋新的值
my_value = ('专业'
,'详细'
)print
(my_value)运行代码,结果如下,可见:
('专业', '详细')
-
元组新增元素
元组新增元素和修改元组元素的方式是一样的,不能在元组本身新增,需要使用替换的方式来完成,具体的操作流程和上面的修改方式完全一样。
-
元组删减元素
元组没办法直接删除元素,但是可以使用变量用的内置函数 del 函数来清空变量:
# 先创建一个元组
my_value = ('牧旗'
,'教程'
)# 删除这个元组
del
my_valueprint
(my_value)此时再运行程序,则会产生红色的报错信息,因为 x 这个变量已经被我们给删除掉了,所以会提示变量没有被定义。
元组的操作
在 Python 中,可以使用多种运算符对元组进行操作,主要用于创建新的元组或者判断大小:
方式 | 符号 | 描述 |
---|---|---|
连接元组 | + | 使用加法符号将多个元组组合起来生成一个新的元组。 |
复制元组 | * | 使用乘法符号复制元组并组合到一起,生成一个新的元组。 |
元组比较大小 | 比较符号 | 使用数学中的比较大小符号可以用来判断元组之间的大小关系。 |
-
连接元组
在 Python 中可以使用加号将多个元组组合起来:
tuple1 = ("牧旗"
,"教程"
)tuple2 = ("专业"
,"详细"
)my_tuple = tuple1 + tuple2print
(my_tuple)运行上面的代码,结果如下:
('牧旗', '教程', '专业', '详细')
-
复制元组
可以使用乘号来复制元组:
my_tuple = ("牧旗"
,"教程"
)final_tuple = my_tuple *3
print
(final_tuple)运行代码,结果如下:
('牧旗', '教程', '牧旗', '教程', '牧旗', '教程')
可以看出,my_tuple 中的两个元素按照顺序复制了三份生成了 final_tuple 变量。
-
元组比较大小
可以使用判断符号来比较不同元组之间的大小,要注意的是,元组之间比较会先将最小索引位置的元素进行比较,得出元组大小关系,如果最小索引位置的元素相同,那么会找下一个索引进行大小比较,依次类推,直到比出一个大小。
tuple1 = (2
,3
)tuple2 = (2
,5
)print
(tuple1 > tuple2)运行代码,结果如下
False
可以看出,tuple1 元组并不大于 tuple2 元组。
元组的其他相关函数
元组的相关函数和列表的相关函数基本一致,详情可以在列表教程中深入学习,在此不再详细展开,另外要注意的是,由于元组是无法进行修改的,所以 元组中没有 sort 排序函数。
名称 | 写法 | 描述 |
---|---|---|
in | 元素 in tuple | 判断元素是否属于元组。 |
len | len(tuple) | 计算元组内的元素数量。 |
count | tuple.count(元素) | 计算某个元素在元组中出现的次数。 |
index | tuple.index(元素) | 计算某个元素在元组中出现的位置索引。 |
元组内部数据结构可修改
因为元组内部的元素是不可以整体修改的,但是如果元组里的某个元素的内部是可以修改的,那么可以在外部修改这个可变元素的内部。
上面这段话听起来有点绕口,我来举一个例子:如果元组里面的一个元素是列表,那么虽然这个列表是在元组里面的,但是它一样可以被修改。
来看一个例子方便理解,通过代码来修改一个元组存储的列表中的元素:
# 定义一个元组
"牧旗教程"
, "通俗易懂"
, ["Python"
, "Mysql"
, "Java"
])# 修改元组的第三个列表元素
2
][2
] = "Html"
# 输出结果
print
(mytuple)运行上面的代码,结果如下:
('牧旗教程', '通俗易懂', ['Python', 'Mysql', 'Html'])
可以看到,元组中第三个元素是列表,列表中的第三个元素 Java 被修改成了 Html,虽然元组的性质是不可修改,但是我们通过索引却修改了元组内的一个列表的元素,这是因为我们的操作指针选择的是 列表,而不是 元组。
关注公众号【牧旗教程】,回复“更多例题”,获取更多题型进行训练~
您的打赏将帮助维护网站服务器的正常运营,并为作者的后续更新提供更多的动力。
Copyright © 2013-2023 Muqi Course. All Rights Reserved. 牧旗教程 版权所有 京ICP备2023029281号