跳转至

05 元组基础

元组(Tuple)是 Python 中一种不可变的序列类型,用于存储多个有序元素。与列表(List)不同,元组一旦创建,其内容不可修改。元组通常用于存储不应被更改的数据集合,例如坐标、配置参数等。

元组的定义使用圆括号 (),元素之间用逗号分隔:

my_tuple = (1, 2, 3, "hello") # 元组也可以装入多个不同的数据类型

元组的创建

  1. 直接赋值:使用圆括号直接定义元组。

    tuple1 = (1, 2, 3)
    

  2. 省略圆括号:在不引起歧义的情况下,可以省略圆括号,仅用逗号分隔元素(但是一般情况下并不建议这么做)。

    tuple2 = 4, 5, 6
    

  3. 单元素元组:定义单元素元组时,必须在元素后加逗号,否则会被识别为普通变量。

    single_tuple = (7,)  # 正确
    not_a_tuple = (8)    # 错误,实际上是整数 8
    

  4. 使用 tuple() 函数:将其他可迭代对象(如列表、字符串)转换为元组。

    list_data = [1, 2, 3]
    tuple3 = tuple(list_data)  # 结果为 (1, 2, 3)
    

元组一旦创建,其内容不可修改(添加、删除或替换元素)。尝试修改会引发 TypeError

my_tuple = (1, 2, 3)
my_tuple[0] = 10  # 报错:TypeError 'tuple' object does not support item assignment

元组的访问

  1. 索引访问:通过下标访问元组中的元素。

    1
    2
    3
     tuple1 = (1, 2, 3, 4, 5)
     print(tuple1[2]) # 3
     print(tuple1[-1]) # 5
    

  2. 切片操作:提取子元组。

    1
    2
    3
    4
    5
    6
    7
     tuple1 = (1, 2, 3, 4, 5)
     print(tuple1[1:3]) # (2, 3) 
     print(tuple1[:3]) # (1, 2, 3)
     print(tuple1[3:]) # (4, 5)
     print(tuple1[:]) # (1, 2, 3, 4, 5)
     print(tuple1[::2]) # (1, 3, 5)
     print(tuple1[::-1]) # (5, 4, 3, 2, 1)
    

元组的常见操作

  1. 拼接元组:使用 + 运算符拼接多个元组。

    1
    2
    3
    tuple1 = (1, 2)
    tuple2 = (3, 4)
    combined = tuple1 + tuple2  # 结果为 (1, 2, 3, 4)
    

  2. 重复元组:使用 * 运算符重复元组内容。

    repeated = (1, 2) * 3  # 结果为 (1, 2, 1, 2, 1, 2)
    

  3. 成员检查:使用 in 检查元素是否存在于元组中。

    my_tuple = (10, 20, 30)
    print(20 in my_tuple)  # 输出 True
    

  4. 元组支持解包(Unpacking),允许将元组元素赋值给多个变量:

    1
    2
    3
    my_tuple = (1, 2, 3)
    a, b, c = my_tuple
    print(a, b, c)  # 输出 1 2 3
    

元组的高级用法

  1. 命名元组:使用 collections.namedtuple 创建具有字段名的元组,增强可读性。

    1
    2
    3
    4
    5
    from collections import namedtuple
    PointV = namedtuple("Point", ["x", "y"])
    p = PointV(10, 20)
    print(p.x, p.y)  # 输出 10 20
    print(p) # Point(x=10, y=20)
    

  2. 元组作为字典键:元组是不可变的,因此可以作为字典的键,而列表不行。

    coordinates = {(1, 2): "A", (3, 4): "B"}
    print(coordinates[(1, 2)])  # 输出 "A"
    

  3. 函数返回多个值:函数可以通过元组返回多个值。

    1
    2
    3
    4
    def get_values():
        return 1, 2, 3
    
    a, b, c = get_values()  # 解包返回值
    

元组与列表的对比

特性 元组 (Tuple) 列表 (List)
可变性 不可变 可变
定义符号 () []
性能 更快 较慢
适用场景 数据保护、字典键 动态数据操作

元组比列表更轻量级,访问速度更快,适合存储不变数据,同时元组是 Python 中一种高效且安全的数据结构。在需要高性能的场景(如大量数据读取)中,优先使用元组,通过合理使用元组,可以提高代码的可读性和性能。