Python自学09

Python自学09

Python自学09-常用数据结构之元组

🐍 前言在 Python 的数据结构家族中,元组(Tuple)常常被误解为“跟列表差不多,只是不能改”。

但真相是——元组的不可变性,不只是“锁住”数据,它在数据安全、性能优化、代码语义等方面,都有着不可替代的作用。

今天我们就来一次全方位的元组拆解,让你彻底搞懂它的用法与应用场景。

img1️⃣ 元组是什么?定义元组是有序、不可变的元素集合。用圆括号 () 或内置函数 tuple() 创建。支持不同类型元素混合存储。示例:

代码语言:javascript复制# 创建元组

t1 = (1, 2, 3)

t2 = ("Python", True, 3.14)

t3 = tuple([1, 2, 3]) # 由列表转换2️⃣ 元组 VS 列表特性

元组(tuple)

列表(list)

可变性

❌ 不可变

✅ 可变

性能

✅ 更快(内存小)

❌ 相对较慢

适用场景

不希望被修改的数据

需要频繁修改的数据

语义表达

固定结构数据

动态数据集合

💡 记忆技巧 列表像“购物车”,随时可增减;元组像“收据”,一旦打印不可更改。

3️⃣ 元组的基本操作3.1 访问元素代码语言:javascript复制t = ("Python", "Java", "Go")

print(t[0]) # Python

print(t[-1]) # Go3.2 切片代码语言:javascript复制print(t[0:2]) # ('Python', 'Java')3.3 解包(Unpacking)代码语言:javascript复制lang1, lang2, lang3 = t

print(lang1, lang2, lang3) # Python Java Go3.4 嵌套元组代码语言:javascript复制nested = (1, (2, 3), (4, 5))

print(nested[1][1]) # 34️⃣ 元组的高级用法4.1 多变量赋值代码语言:javascript复制x, y = (10, 20)4.2 交换变量值代码语言:javascript复制a, b = 1, 2

a, b = b, a4.3 作为字典的键代码语言:javascript复制coords = {(10, 20): "位置A", (30, 40): "位置B"}

print(coords[(10, 20)])因为元组不可变,所以可以安全用作字典的键。

4.4 函数返回多个值代码语言:javascript复制def get_point():

return (3, 4)

x, y = get_point()5️⃣ 元组的不可变性,真的是绝对的吗?元组的不可变性指的是元组结构本身不能改,但如果元组里的元素是可变对象(如列表),那个对象依然可以被修改。

代码语言:javascript复制t = (1, [2, 3])

t[1].append(4) # 不会报错

print(t) # (1, [2, 3, 4])所以,元组是浅不可变。

6️⃣ 性能对比小测试代码语言:javascript复制import timeit

list_test = timeit.timeit(stmt="[1, 2, 3, 4, 5]", number=1000000)

tuple_test = timeit.timeit(stmt="(1, 2, 3, 4, 5)", number=1000000)

print("列表耗时:", list_test)

print("元组耗时:", tuple_test)💡 在多数情况下,元组的创建和访问速度会比列表更快。

📌 总结核心特性:有序、不可变、可存放不同类型的数据。适用场景:固定数据结构、多值返回、作为字典键。性能优势:内存占用更小、访问速度更快。注意事项:内部可变对象仍可被修改。🚀 实战建议(来自星哥)配置类常量:用元组代替列表存储不会变的常量数据。函数返回值:用元组一次性打包多个返回值。安全字典键:避免列表当作键引发 TypeError。💬 你在项目中用元组最多的场景是哪里?评论区聊聊,让更多人少踩坑!

相关推荐

无畏契约中国战队大揭秘
bat365中文官方网站

无畏契约中国战队大揭秘

📅 10-12 👁️ 1327
苹果7p都有什么颜色 苹果7p颜色及图片
365bet备用

苹果7p都有什么颜色 苹果7p颜色及图片

📅 10-12 👁️ 3960
眼皮发紧发沉是怎么回事
bat365中文官方网站

眼皮发紧发沉是怎么回事

📅 09-23 👁️ 4738