元组(Tuple)是 Python 中的一种数据类型,用于存储多个元素。它与列表类似,但与列表不同的是,元组是不可变的,一旦创建,就不能修改其中的元素。元组通常用于存储不同类型的元素,或者需要保证数据不被修改时使用。
元组的基本特性
- 不可变性:元组一旦创建,不能修改、添加或删除其中的元素。
- 有序性:元组中的元素是有序的,可以通过索引访问每个元素。
- 可以包含重复元素:元组中的元素可以重复,Python 不限制。
- 支持嵌套:元组中可以包含其他元组或不同类型的元素。
创建元组
元组通过一对小括号 ()
创建,元素之间用逗号 ,
分隔。如果元组只有一个元素,需要在元素后面加上逗号,以区别于普通的括号运算。
# 创建元组
t = (1, 2, 3)
# 创建含有一个元素的元组
single_element_tuple = (1,)
访问元组元素
可以通过索引来访问元组中的元素,索引从 0 开始。支持负索引,表示从右往左访问元素。
t = (1, 2, 3)
# 访问第一个元素
print(t[0]) # 输出: 1
# 访问最后一个元素
print(t[-1]) # 输出: 3
切片操作
和列表一样,元组支持切片操作。可以获取元组的一部分。
t = (1, 2, 3, 4, 5)
# 获取从第2到第4的元素(不包括第4)
print(t[1:4]) # 输出: (2, 3, 4)
元组的不可变性
元组是不可变的,这意味着你不能修改、删除或添加元素。
t = (1, 2, 3)
# 尝试修改元素
# t[0] = 10 # 会抛出 TypeError: 'tuple' object does not support item assignment
# 尝试删除元素
# del t[0] # 会抛出 TypeError: 'tuple' object doesn't support item deletion
元组与列表的区别
- 可变性:元组不可变,列表可变。
- 语法:元组使用圆括号
()
,列表使用方括号[]
。 - 性能:由于元组不可变,因此它们的创建和访问速度通常比列表快。
- 用途:元组常用于需要不可修改的场景,或者作为字典的键(因为元组是可哈希的,而列表不是)。
嵌套元组
元组可以包含其他元组或不同类型的数据结构。
nested_tuple = (1, (2, 3), [4, 5])
print(nested_tuple[1]) # 输出: (2, 3)
print(nested_tuple[2]) # 输出: [4, 5]
元组常用操作
-
连接:可以通过加法操作符连接多个元组。
t1 = (1, 2) t2 = (3, 4) t3 = t1 + t2 # 连接元组 print(t3) # 输出: (1, 2, 3, 4)
-
重复:通过乘法操作符重复元组中的元素。
t = (1, 2) t_repeated = t * 3 # 元组重复3次 print(t_repeated) # 输出: (1, 2, 1, 2, 1, 2)
-
长度:可以使用
len()
获取元组的长度(即元素的个数)。t = (1, 2, 3) print(len(t)) # 输出: 3
-
成员检查:使用
in
运算符检查元素是否在元组中。t = (1, 2, 3) print(2 in t) # 输出: True print(4 in t) # 输出: False
元组的应用场景
-
作为字典的键:由于元组是不可变的,它们可以作为字典的键,而列表不能。
d = {('a', 1): 'value1'} print(d[('a', 1)]) # 输出: value1
-
返回多个值:函数可以返回元组,方便一次返回多个不同类型的值。
def get_coordinates(): return (1.2, 3.4) coords = get_coordinates() print(coords) # 输出: (1.2, 3.4)
总结
元组是不可变的有序集合,适用于需要保证数据不被修改的场景。通过索引、切片等操作可以访问元组中的元素,但无法修改其内容。