Python 元组:不可变序列和拆包

了解 Python 元组。了解何时使用元组而不是列表、元组解包的工作原理以及不变性如何保证数据安全。

在编辑器中尝试

概述

元组是 Python 中有序的、不可变的元素序列。与列表不同,列表用方括号“[]”括起来并且可以更改,而元组则用括号“()”括起来,一旦创建就无法修改。尝试在元组中添加、追加、删除或重新分配元素将导致运行时错误。这种不变性充当了一项安全功能,确保应用程序中传递的数据保持恒定和安全。

由于元组是不可变的,因此它们比列表更快并且使用更少的内存。它们也是可散列的(假设元组中的所有元素都是可散列的),这允许它们用作字典中的键或集合中的元素——功能列表不支持。元组传统上用于对异构数据记录进行分组,例如表示数据库行、坐标或 RGB 颜色值。

元组最优雅的功能之一是元组拆包。这允许您将元组的元素分配给单行中的各个变量(例如“x, y = 坐标”)。当从函数返回多个值时,它被大量使用。 Python 还允许使用解包 (`a, b = b, a`) 动态交换变量,而不需要临时的第三个变量,从而使您的代码明显更干净且更易于遵循。

代码和执行输出

将坐标创建为元组,演示不变性限制并解包元素。

tuples_demo.py
在编辑器中尝试
# Creating tuples
location = (40.7128, -74.0060)  # NYC Coordinates
print(f"Latitude: {location[0]}, Longitude: {location[1]}")

# Tuple unpacking
lat, lon = location
print(f"Unpacked Lat: {lat} | Unpacked Lon: {lon}")

# Function returning multiple values
def get_user_info():
    return "Alice", 25, "admin"

name, age, role = get_user_info()
print(f"{name} ({role}) is {age} years old.")
端子输出
Latitude: 40.7128, Longitude: -74.006
Unpacked Lat: 40.7128 | Unpacked Lon: -74.006
Alice (admin) is 25 years old.

逐步实施

  • 从辅助函数中干净地返回多个值
  • 存储坐标、颜色或数据库记录等常量
  • 为多维映射定义不可变字典键

常见问题解答

如何定义具有单个元素的元组?

您必须在元素后添加尾随逗号,例如 single_item = (42,)。如果没有逗号,Python 将其视为标准括号表达式。

您可以修改嵌套在元组内的列表吗?

是的。虽然元组引用本身是不可变的,但如果它包含可变对象(例如列表),您可以就地修改这些列表的内容。

相关主题

推荐的 Python 资源

通过相关的交互式教程、备忘单和代码比较来扩展您的知识。