一 什么是元组(tuple)

元组(Tuple)是一个有序、不可变的序列类型。 它与列表类似,也可以存放多个不同类型的元素,但一旦创建,内容就不能被修改

创建元组使用小括号 (),元素之间用逗号分隔:

t = (1, 2, 3)
print(t)

输出:

(1, 2, 3)

你可以把元组看作是“不可修改的列表”。


二 元组的创建方式

1. 使用小括号创建

t1 = (1, 2, 3)

2. 不加括号,直接用逗号分隔

t2 = 1, 2, 3
print(t2)  # (1, 2, 3)

Python 会自动将多个逗号分隔的值识别为一个元组。

3. 单元素元组的特殊写法

如果只有一个元素,需要加上逗号,否则不会被识别为元组。

t3 = (5,)   # 正确写法
t4 = (5)    # 错误,这只是一个整数
print(type(t3))  # <class 'tuple'>
print(type(t4))  # <class 'int'>

4. 使用 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)

这说明:元组的引用不可变,但引用的对象本身可以变。


五 元组的常用操作

1. 拼接与重复

a = (1, 2)
b = (3, 4)
print(a + b)   # (1, 2, 3, 4)
print(a * 3)   # (1, 2, 1, 2, 1, 2)

2. 成员判断

t = (10, 20, 30)
print(20 in t)    # True
print(100 not in t)  # True

3. 遍历元组

for item in ('A', 'B', 'C'):
    print(item)

4. 获取长度与最大最小值

t = (5, 3, 8, 1)
print(len(t))  # 4
print(max(t))  # 8
print(min(t))  # 1

六 元组的解包(Unpacking)

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]

七 元组的应用场景

1. 函数返回多个值

def get_user_info():
    return "Tom", 28, "Engineer"

name, age, job = get_user_info()
print(name, age, job)

2. 作为字典的键

由于元组是不可变的,因此可以作为字典的键使用,而列表不行。

pos = {(0, 0): 'A', (1, 1): 'B'}
print(pos[(0, 0)])  # A

3. 固定结构的数据存储

当数据在逻辑上不会被修改时,用元组更安全也更高效,比如坐标点 (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

通过元组存储固定结构的数据,使代码结构清晰且高效。


总结

  1. 元组是有序、不可变的序列类型。
  2. 用小括号 () 或逗号创建,单元素元组必须加逗号。
  3. 支持索引、切片、拼接、遍历等操作。
  4. 不可变性让元组更安全,也能作为字典键。
  5. 常用于函数多值返回、数据打包与解包、固定结构存储等场景。

本站提供的所有下载资源均来自互联网,仅提供学习交流使用,版权归原作者所有。如需商业使用,请联系原作者获得授权。 如您发现有涉嫌侵权的内容,请联系我们 邮箱:[email protected]