Python 中的元组(tuple)是一种有序的、不可变的数据结构,用于存储一组相关的数据。元组与列表非常相似,但它们最大的区别在于元组一旦创建就不能修改(即不可变),而列表是可变的。
创建元组
用圆括号创建
my_tuple = (1, 2, 3)
用逗号创建(不常用)
my_tuple = 1, 2, 3
创建单个元素的元组
single_element_tuple = (1,) # 需要在元素后加逗号
空元组
empty_tuple = ()
访问元组元素
通过索引访问元组元素,索引从 0 开始:
my_tuple = (1, 2, 3, 4)
print(my_tuple[0]) # 输出 1
print(my_tuple[2]) # 输出 3
可以使用负索引从后向前访问元素:
print(my_tuple[-1]) # 输出 4
print(my_tuple[-3]) # 输出 2
元组的不可变性
元组中的元素不能修改:
my_tuple = (1, 2, 3)
# my_tuple[0] = 10 # 这行代码会报错,因为元组是不可变的
但是,如果元组中包含可变的元素(如列表),那么这些可变元素是可以修改的:
my_tuple = (1, [2, 3], 4)
my_tuple[1][0] = 20
print(my_tuple) # 输出 (1, [20, 3], 4)
元组操作
长度
print(len(my_tuple)) # 输出 3
拼接
可以通过 + 操作符拼接元组
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
new_tuple = tuple1 + tuple2
print(new_tuple) # 输出 (1, 2, 3, 4, 5, 6)
复制
可以通过 * 操作符复制元组:
my_tuple = (1, 2, 3)
new_tuple = my_tuple * 2
print(new_tuple) # 输出 (1, 2, 3, 1, 2, 3)
检查元素是否存在
可以使用 in 关键字检查元素是否存在于元组中:
my_tuple = (1, 2, 3)
print(2 in my_tuple) # 输出 True
print(5 in my_tuple) # 输出 False
切片
可以通过切片操作符 : 获取元组的子元组:
my_tuple = (1, 2, 3, 4, 5)
print(my_tuple[1:3]) # 输出 (2, 3)
print(my_tuple[:3]) # 输出 (1, 2, 3)
print(my_tuple[3:]) # 输出 (4, 5)
元组的解包
元组解包是一种方便的方法,可以将元组中的元素赋值给多个变量:
my_tuple = (1, 2, 3)
a, b, c = my_tuple
print(a, b, c) # 输出 1 2 3
可以使用 * 运算符将剩余的元素赋值给一个变量:
my_tuple = (1, 2, 3, 4, 5)
a, *b, c = my_tuple
print(a) # 输出 1
print(b) # 输出 [2, 3, 4]
print(c) # 输出 5
元组的方法
由于元组是不可变的,所以它的方法非常少,只有两个:
count(x): 返回元组中 x 出现的次数。
index(x): 返回元组中第一次出现 x 的索引。
my_tuple = (1, 2, 3, 2, 2, 4)
print(my_tuple.count(2)) # 输出 3
print(my_tuple.index(3)) # 输出 2
元组的应用
不变的数据集合:当你有一组数据不希望被修改时,可以使用元组,例如,函数的参数和返回值。
字典键:由于元组是不可变的,因此可以作为字典的键。
多变量赋值:元组可以用于在一行中对多个变量赋值。
数据交换:通过元组,可以很方便地交换两个变量的值。
a = 1
b = 2
a, b = b, a
print(a, b) # 输出 2 1
总结
元组是一种不可变的有序数据结构,用于存储一组相关的数据。由于元组的不可变性,它们通常用于存储不需要改变的数据。元组可以通过索引访问、切片操作、拼接等操作进行处理,但不能修改其中的元素。元组解包是一种非常方便的操作,可以将元组中的元素快速赋值给多个变量。