元组定义
-
元组是有序的不可变对象集合,一旦定义后,元组中的数据不可以进行添加,修改和删除等操作
-
元组使用小括号包围,各个对象之间使用逗号分隔
-
元组是异构的,可以包含多种数据类型。这使得元组成为一种有效的数据结构,用于存储多种不同类型的元素。
-
元组使用小括号 () 来定义,将元组中的元素括在小括号中。
-
元组中的元素通过逗号 , 进行分隔,每个元素都可以是不同的数据类型。
-
使用小括号 () 来创建一个空元组。如果没有任何元素需要添加到元组中,空无组没有任何实际意义。
-
定义无组时,逗号是必须的,即使元组只包含一个元素,也需要在元素后面加上逗号,以区分它是一个元组而不是其他数据类型。
t1 = (1, 2, "hello", True)
t2 = (1, )
t3 = ()
1、直接使用逗号分隔
t5 = 1, 2, 3
print(type(t5), t5)
2、通过小括号填充元素
t3 = (1, 2, 3)
print(t3)
t4 = ('a', 'b', 'c')
print(t4)
3、通过构造函数tuple()
t1 = tuple()
print(type(t1), t1)
t2 = tuple([1, 2, 3])
print(t2)
print(type(t2))
可以通过元组的构造方法定义元组。 当使用构造方法定义元组时,参数只能是可迭代的对象,构造方法会将参数中的元素构造成为元组的元素。 可以理解为将可迭代的对象强制类型转换为元组。
t1 = tuple("abc")
t2 = tuple((1,2,3))
t3 = tuple([1,2,3])
4、注意:单元素元组,逗号不可或缺
tup6 = 1,
print(type(tup6), tup6)
元组常用方法
元素索引
元组同字符串一样,也可以使用下标形式引用元组中的元素。并且,下标不能超过元组的元素个数减1,否则会抛出下标越界错误。
t = (1,2,3,4,5)
print(t[0])
print(t[3])
print(t[5])
t4 = ('a', 'b', 'c')
print(t4[1])
print(t4[-1])
元组的切片操作
元组的切片操作同字符串一致
t = (1,2,3,4,5)
print(t[0:3])
print(t[:3])
print(t[3:])
print(t[:])
print(t[::-1])
元组的常用方法
由于元组的不可变特性,所以元组提供的操作方法非常少。
-
len()
获取元组元素个数 格式:len(t)
t = (1,2,3,4,5)
print(len(t))
-
count(item)
:返回某个元素出现的次数;入参:对象item;返回:次数 -
index(item)
:返回与目标元素相匹配的首个元素的索引。目标必须在元组中存在的,否则会报错
t7 = ('hogwarts')
print(t7.index('o'))
print(t7.count('g'))
print(t7.index('b'))
元组解包
把一个可迭代对象里的元素,一并赋值到由对应的变量组成的元组中
# 传统逐个赋值的方式
t = (1, 2, 3)
a = t[0]
b = t[1]
c = t[2]
print(a, b, c)
使用元组解包,一气呵成;解包平行赋值
a, b, c = [1, 2, 3]
print(a, b, c)
元组的特点
- 有序性:元组中的元素按照添加顺序进行存储,并且可以通过索引来访问和引用。这意味着元组中的元素保持其原始顺序,不会发生改变。
- 不可变性:元组的元素是不可修改、删除或添加的。
t1 = (1, 2, 3)
t1[0] = 10 # 错误!元组不可修改
元组的不可变性使其在某些情况下很有用,例如在需要确保数据的完整性和不变性的场景中。它们也可以用作字典的键或作为函数的参数和返回值。
元组与列表
相同点:
* 都是有序的
* 都是异构的,能够包含不同类型的对象
* 都支持索引和切片
区别:
* 声明方式不同,元组使用(),列表使用[]
* 列表是可变的,元组是不可变的
元组的应用场景
- 存储一组不可变的数据:由于元组的不可变性,它们非常适合存储一组不会发生变化的数据,如常量、配置信息等。您可以使用元组来存储相关的值,以确保数据的完整性和不变性。
- 作为字典的键值对:元组可以作为字典的键值对使用,因为元组是不可变的,可以保证字典中的键的稳定性。相比列表,元组更适合作为字典的键,因为字典的键必须是不可变的。
- 函数返回多个值:函数可以使用元组作为返回值,以便一次性返回多个相关的值。通过返回元组,函数可以将多个数据打包在一起,并且调用函数时可以方便地解包元组,获取其中的各个值。