元组(Tuple)
元组(Tuple)是 Python 中一种内置的有序、不可变的序列数据类型。一旦创建,其元素不能被修改、添加或删除。元组使用小括号()
表示,元素之间用逗号,
分隔。
远足常用于存储一组相关的、不应被更改的数据,例如坐标点(x,y)
、日期(年, 月, 日)
等。
创建元组
基本语法
# # 创建空元组
empty_tuple = ()
# 创建包含一个元素的元组(注意:单个元素后必须加逗号)
single_tuple = (42,) # 正确
single_tuple_wrong = (42) # 错误,这只是一个整数
# 创建包含过个元素的元组
tuple1 = (1, 2, 3, 4, 5)
tuple2 = ("a", "b", "c")
tuple3 = (1, "hello", 3.14, True)
# 使用圆括号不是可选的(但建议使用以提高可读性)
tuple4 = 1, 2, 3
使用tuple()
构造函数
tuple()
构造函数# 从列表创建元组
list_tuple = tuple([1, 2, 3])
# 从字符串创建元组(每个字符成为一个元素)
str_tuple = tuple("abc") # 结果:("a","b","c")
# 从其他可迭代对象创建
range_tuple = tuple(range(5)) # (1,2,3,4)
访问元组元素
索引(Indexing)
t = ('a', 'b', 'c', 'd', 'e')
print(t[0]) # 'a',第一个元素
print(t[2]) # 'c',第三个元素
print(t[-1]) # 'e',最后一个元素
print(t[-2]) # 'd',倒数第二个元素
切片(Slicing)
t = (1, 2, 3, 4, 5)
print(t[1:4]) # (2, 3, 4),从索引1到3
print(t[:3]) # (1, 2, 3),从开始到索引2
print(t[2:]) # (3, 4, 5),从索引2到末尾
print(t[::2]) # (1, 3, 5),步长为2
print(t[::-1]) # (5, 4, 3, 2, 1),反转元组
元组的不可变性
元组是不可变的,这意味着不能修改、添加或删除元素。
t = (1, 2, 3)
# ❌ 以下操作会引发 TypeError
# t[0] = 10 # 不可修改元素
# t.append(4) # 无 append 方法
# t.remove(1) # 无 remove 方法
# t[0] += 1 # 不可变对象不支持增强赋值
注意:如果元组包含可变对象(如列表),虽然元组本身不能被修改,但其内部的可变对象可以被修改。
t = (1, [2, 3], 4)
t[1].append(5) # 允许,修改的是列表,不是元组结构
print(t) # (1, [2, 3, 5], 4)
# 但不能替换整个元素
# t[1] = [2, 3, 4] # ❌ 会报错
元组的基本操作
连接(Concatenation)
t1 = (1, 2)
t2 = (3, 4)
t3 = t1 + t2 # (1, 2, 3, 4)
重复(Repetition)
t = (1, 2)
t_repeated = t * 3 # (1, 2, 1, 2, 1, 2)
成员检查
使用 in
和 not in
检查元素是否存在。
t = (1, 2, 3, 4)
print(3 in t) # True
print(5 not in t) # True
元组的内置函数与方法
内置函数
函数
说明
示例
len(t)
返回元组长度
len((1,2,3))
→ 3
max(t)
返回最大值(元素需可比较)
max((1,5,3))
→ 5
min(t)
返回最小值
min((1,5,3))
→ 1
sum(t)
返回所有元素之和(元素需为数字)
sum((1,2,3))
→ 6
sorted(t)
返回排序后的列表
sorted((3,1,2))
→ [1,2,3]
tuple(iterable)
将可迭代对象转为元组
tuple([1,2,3])
→ (1,2,3)
元组方法
由于元组不可变,其方法较少,只有两个:
方法
说明
t.count(x)
返回元素 x
在元组中出现的次数
t.index(x)
返回元素 x
第一次出现的索引位置,若不存在则抛出 ValueError
t = (1, 2, 2, 3, 2)
print(t.count(2)) # 3
print(t.index(3)) # 3
# print(t.index(5)) # ValueError: tuple.index(x): x not in tuple
元组解包
将元组中的元素赋值给多个变量。
t = (1, 2, 3)
a, b, c = t
print(a, b, c) # 1 2 3
元组解包(Python 3+):使用 *
收集多余元素。
t = (1, 2, 3, 4, 5)
a, *b, c = t
print(a) # 1
print(b) # [2, 3, 4]
print(c) # 5
忽略某些值:使用下划线 _
忽略不需要的元素。
t = ('Alice', 25, 'Engineer')
name, _, job = t # 忽略年龄
print(name, job) # Alice Engineer
元组的应用场景
函数返回多个值
def get_name_age():
return "Alice", 25 # 返回一个元组
name, age = get_name_age()
作为字典的键
def get_name_age():
return "Alice", 25 # 返回一个元组
name, age = get_name_age()
函数参数传递:在函数定义中使用
*args
接收可变数量的位置参数,args
是一个元组。
def func(*args):
print(args) # args 是一个元组
func(1, 2, 3) # 输出: (1, 2, 3)
最后更新于