侧边栏壁纸
博主头像
编程之家 博主等级

行动起来,活在当下

  • 累计撰写 37 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Python 程序设计 - 13. 元组 (tuple)

李航
2025-12-05 / 0 评论 / 0 点赞 / 1 阅读 / 0 字

Python 程序设计 - 13. 元组 (tuple)

1. 引言

在 Python 中,元组tuple)是一种不可变(immutable)的序列类型,与列表(list)类似,但元组一旦创建就不能修改。元组可以存储多个元素,这些元素可以是不同的数据类型。由于其不可变性,元组的操作通常比列表要高效一些。元组经常用于需要保证数据不被修改的场景,或者作为字典的键。

2. 元组的基本概念

元组是通过圆括号(())来定义的,元素之间用逗号(,)分隔。与列表不同,元组的内容一旦定义就无法更改。这种不可变性使得元组在某些情况下比列表更具优势。

定义元组

# 创建一个空元组
empty_tuple = ()

# 创建一个包含多个元素的元组
fruits = ("apple", "banana", "cherry")

# 元组可以包含不同类型的元素
mixed_tuple = (1, "hello", 3.14, True)

3. 元组的常用操作

3.1 访问元组元素

元组的元素可以通过索引来访问,索引从 0 开始。元组支持负数索引,可以从后向前访问元素。

fruits = ("apple", "banana", "cherry")

# 访问第一个元素
print(fruits[0])  # 输出: apple

# 访问最后一个元素
print(fruits[-1])  # 输出: cherry
3.2 元组切片

与列表类似,元组也支持切片操作,能够提取元组的一个子集。

fruits = ("apple", "banana", "cherry", "date", "elderberry")

# 提取从第2个元素到第4个元素的子元组
sub_fruits = fruits[1:4]
print(sub_fruits)  # 输出: ('banana', 'cherry', 'date')
3.3 修改元组元素

元组是不可变的,意味着一旦创建就不能修改其中的元素。如果你尝试修改元组的元素,Python 会抛出 TypeError

fruits = ("apple", "banana", "cherry")
# fruits[1] = "orange"  # 会引发 TypeError: 'tuple' object does not support item assignment
3.4 拼接元组

可以通过 + 运算符将两个元组连接成一个新的元组,原来的元组不会发生变化。

tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)

# 使用 + 运算符连接两个元组
combined_tuple = tuple1 + tuple2
print(combined_tuple)  # 输出: (1, 2, 3, 4, 5, 6)
3.5 重复元组

通过 * 运算符可以重复元组中的元素,生成一个新的元组。

tuple1 = (1, 2, 3)

# 使用 * 运算符重复元组
repeated_tuple = tuple1 * 3
print(repeated_tuple)  # 输出: (1, 2, 3, 1, 2, 3, 1, 2, 3)
3.6 元组的长度

可以使用 len() 函数来获取元组的长度,即元组中元素的个数。

fruits = ("apple", "banana", "cherry")
print(len(fruits))  # 输出: 3
3.7 查找元素

可以使用 in 运算符检查某个元素是否在元组中,返回布尔值。

fruits = ("apple", "banana", "cherry")

# 检查元素是否在元组中
print("banana" in fruits)  # 输出: True
print("orange" in fruits)  # 输出: False
3.8 元组的嵌套

元组可以包含其他元组,形成嵌套元组。访问嵌套元组的元素时,需要使用多重索引。

nested_tuple = ((1, 2, 3), (4, 5, 6), (7, 8, 9))

# 访问第二个子元组的第三个元素
print(nested_tuple[1][2])  # 输出: 6

4. 元组与列表的区别

特性元组 (tuple)列表 (list)
可变性不可变(immutable)可变(mutable)
定义方式使用圆括号 ()使用方括号 []
元素修改无法修改元素可以修改元素
性能由于不可变,通常比列表更高效可变性导致性能较低
用途常用于需要保证数据不被修改的场合通常用于需要修改数据的场合
支持的操作支持切片、连接、重复等支持所有元组的操作,以及添加、删除等

5. 元组常见方法

方法描述
tuple.count(x)返回元素 x 在元组中出现的次数
tuple.index(x)返回元素 x 在元组中的索引位置(如果元素不存在会抛出异常)

注意:与列表不同,元组不支持 append()remove()insert()pop() 等方法,因为它是不可变的。

6. 元组的应用场景

元组在以下场景中尤为有用:

  1. 作为不可变的数据结构:当需要一个不能修改的集合时,可以使用元组。
  2. 作为字典的键:由于元组是不可变的,它可以作为字典的键,而列表不行。
  3. 返回多个值:元组可以用来从函数中返回多个值。例如,Python 的 divmod() 函数返回一个包含商和余数的元组。
def divide(x, y):
    return x // y, x % y

result = divide(10, 3)
print(result)  # 输出: (3, 1)

7. 练习题

练习 1:访问元组元素
fruits = ("apple", "banana", "cherry")
print(fruits[1])  # 输出: banana
练习 2:元组的拼接和重复
tuple1 = (1, 2, 3)
tuple2 = (4, 5, 6)
print(tuple1 + tuple2)  # 输出: (1, 2, 3, 4, 5, 6)
print(tuple1 * 2)  # 输出: (1, 2, 3, 1, 2, 3)
练习 3:检查元素是否存在于元组中
tuple1 = ("apple", "banana", "cherry")
print("banana" in tuple1)  # 输出: True
print("orange" in tuple1)  # 输出: False
练习 4:使用 count()index()
tuple1 = (1, 2, 3, 2, 4, 2)
print(tuple1.count(2))  # 输出: 3
print(tuple1.index(3))  # 输出: 2

8. 总结

元组是 Python 中一种非常重要的序列类型。与列表相比,元组的最大特点是不可变,这使得它在某些情况下更加高效和安全。元组通常用于存储不需要修改的数据,或者作为字典的键。掌握元组的基本操作将帮助你更好地组织和管理数据,尤其是在涉及不可变数据的场景下。

0

评论区