地壳免安装中文正式版
5.38G · 2025-10-29
元组(Tuple)是一个有序、不可变的序列类型。 它与列表类似,也可以存放多个不同类型的元素,但一旦创建,内容就不能被修改。
创建元组使用小括号 (),元素之间用逗号分隔:
t = (1, 2, 3)
print(t)
输出:
(1, 2, 3)
你可以把元组看作是“不可修改的列表”。
t1 = (1, 2, 3)
t2 = 1, 2, 3
print(t2) # (1, 2, 3)
Python 会自动将多个逗号分隔的值识别为一个元组。
如果只有一个元素,需要加上逗号,否则不会被识别为元组。
t3 = (5,) # 正确写法
t4 = (5) # 错误,这只是一个整数
print(type(t3)) # <class 'tuple'>
print(type(t4)) # <class 'int'>
tuple() 函数创建t5 = tuple([1, 2, 3])
print(t5) # (1, 2, 3)
元组的访问方式与列表完全一致。
t = ('apple', 'banana', 'cherry')
print(t[0]) # apple
print(t[-1]) # cherry
print(t[0:2]) # ('apple', 'banana')
元组的最大特点就是不可变,意味着你不能对其进行修改、添加或删除操作。
t = (1, 2, 3)
t[0] = 99 # 报错
报错信息:
TypeError: 'tuple' object does not support item assignment
虽然元组本身不可变,但如果元组中包含可变对象(比如列表),列表的内容是可以改变的。
t = (1, [2, 3], 4)
t[1].append(5)
print(t) # (1, [2, 3, 5], 4)
这说明:元组的引用不可变,但引用的对象本身可以变。
a = (1, 2)
b = (3, 4)
print(a + b) # (1, 2, 3, 4)
print(a * 3) # (1, 2, 1, 2, 1, 2)
t = (10, 20, 30)
print(20 in t) # True
print(100 not in t) # True
for item in ('A', 'B', 'C'):
print(item)
t = (5, 3, 8, 1)
print(len(t)) # 4
print(max(t)) # 8
print(min(t)) # 1
Python 支持对元组进行“解包”操作,即一次性将元组的多个值赋给多个变量。
person = ('Alice', 25, 'Developer')
name, age, job = person
print(name) # Alice
print(age) # 25
print(job) # Developer
还可以使用星号 * 接收不确定数量的元素:
a, *b = (1, 2, 3, 4, 5)
print(a) # 1
print(b) # [2, 3, 4, 5]
def get_user_info():
return "Tom", 28, "Engineer"
name, age, job = get_user_info()
print(name, age, job)
由于元组是不可变的,因此可以作为字典的键使用,而列表不行。
pos = {(0, 0): 'A', (1, 1): 'B'}
print(pos[(0, 0)]) # A
当数据在逻辑上不会被修改时,用元组更安全也更高效,比如坐标点 (x, y)、RGB 颜色 (r, g, b) 等。
| 特性 | 列表(list) | 元组(tuple) |
|---|---|---|
| 是否可变 | 可变 | 不可变 |
| 语法符号 | [] | () |
| 典型用途 | 需要修改的数据集合 | 固定结构的数据 |
| 可作为字典键 | 否 | 是 |
students = [
('Tom', 20, 'A'),
('Lucy', 19, 'B'),
('Jack', 21, 'A')
]
for name, age, grade in students:
print(f"{name} 的年龄是 {age},成绩等级为 {grade}")
输出:
Tom 的年龄是 20,成绩等级为 A
Lucy 的年龄是 19,成绩等级为 B
Jack 的年龄是 21,成绩等级为 A
通过元组存储固定结构的数据,使代码结构清晰且高效。
() 或逗号创建,单元素元组必须加逗号。
5.38G · 2025-10-29
2.25G · 2025-10-29
61.6G · 2025-10-29