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