📝前言: 上一篇文章python基础——列表讲解了关于列表的先关知识,还介绍了很多列表的常见操作方法,这篇文章我们就基于上篇文章带大家认识的有关序列的知识,继续讲解python中另一种常见的数据容器——元组: 1,元组的特点 2,元组的定义 3,元组的常见操作方法
元组(tuple
)是一种不可变的序列类型。它和列表非常类似,甚至可以理解为是一种不可修改的列表。
那他和列表到底有什么区别呢?
●不可变性:一旦创建了一个元组,你就不能更改、添加或删除其中的任何元素。 ●使用圆括号:元组使用圆括号
()
来定义,而列表使用方括号[]
●可哈希性:由于元组是不可变的,它们可以用作字典的键,而列表则不能。 ●多值赋值:当你将一个元组赋值给多个变量时,这些变量将分别存储元组中的每个值。这与列表不同,列表会尝试将整个列表赋值给多个变量,这会导致类型错误。(这可以让我们想到函数的多个返回值,实际上是返回了一个元组(tuple
))
使用()
定义,元素之间用逗号隔开
(元素,元素,元素 ......)
示例:
# 创建一个空元组
empty_tuple = ()
em_tuple = tuple()
# 创建一个包含多个元素的元组
multiple_elements_tuple = (1, 2, 3, "hello", 4.5)
# 元组也支持嵌套
t1 = ((1,2,3),(4,5,6))
注意:当元组只有一个元素的时候,我们需要在元素后多加一个“,
”才能代表我们创建的是元组
形式:
(元素,)
示例:
# 创建一个包含一个元素的元组
single_element_tuple = (1,) # 注意:单个元素的元组需要在元素后面添加逗号
元组的下标索引和列表基本无异,同样可以使用正向或反向索引 示例:
my_tuple = (1, 2, 3, 4, 5)
# 使用正向索引
print(my_tuple[0]) # 结果是 1
# 使用反向索引
print(my_tuple[-1]) # 结果是 5
元组中的元素我们是无法修改的,如下:
my_tuple = (1, 2, 3, 4, 5)
my_tuple[0] = 1 # 这是错误的,会触发TypeError
但是,有一种特殊情况: 当元组元素中有嵌套列表时,我们可以修改元组中嵌套的列表,如下:
my_tuple = (1, 2, [3,4,5])
my_tuple[2][0] = 0 # 修改元素列表中的第一个元素
print(my_tuple) # 输出:(1, 2, [0, 4, 5])
并且我们在修改后,也会影响到所嵌套的列表 如下:
my_list = [3,4,5]
my_tuple = (1, 2, my_list) # my_list嵌套在my_tuple里
my_tuple[2][0] = 0 # 修改my_tuple的元素列表的内容
print(my_list)
print(my_tuple)
输出结果:
可见my_list
也被修改了
这是因为:python的赋值语句不会创建对象的副本,仅仅创建引用。这里的my_list
和my_tuple
嵌入的列表共同引用同一个内存对象。
改变my_tuple
所引用的对象的值时,my_list
的值也会被改变,反之亦然
因为元组是不可修改的序列,所以像列表中的append
、extend
、insert
等直接对序列进行操作元组都实现不了。
下面是元组能够使用的操作:
my_tuple = (10, 20, 30, 20, 40, 50)
# 使用index()方法查询元素20首次出现的索引
index_of_20 = my_tuple.index(20)
print(index_of_20) # 输出: 2
(注意:如果查找的元素不在元组中,index()
方法将引发一个ValueError
)
my_tuple = (10, 20, 30, 20, 40, 50, 20, 60)
# 使用count()方法查询元素20出现的次数
count_of_20 = my_tuple.count(20)
print(count_of_20) # 输出: 3
还可以为count()
方法提供一个可选的起始索引和结束索引,以便只计算指定范围内的元素出现次数。
如下:
my_tuple = (10, 20, 30, 20, 40, 50, 20, 60)
# 查询从索引2开始到索引6(不包括索引6)的范围内元素20出现的次数
count_of_20_in_range = my_tuple.count(20, 2, 6) # (元素,起始,结束)
print(count_of_20_in_range) # 输出: 2
my_tuple = (10, 20, 30, 40, 50)
# 使用len()函数查询元组中的元素数量
length = len(my_tuple)
print(length) # 输出: 5