三、元组(Tuple)学习笔记
2026-02-19
Python基础
type
Post
status
Published
date
Feb 19, 2026
slug
python-data-structures-tuple-notes-3
summary
今天学习了元组,发现和列表很像,但是有个重要区别——不能修改!
tags
Python数据存储容器
category
Python基础
icon
password
今天学习了元组,发现和列表很像,但是有个重要区别——不能修改!
一、什么是元组?
1.1 我的理解
元组就是不能修改的列表,用圆括号
() 表示。一旦创建,里面的元素就不能增删改了。1.2 为什么要用元组?
问题:有些数据不应该被修改,比如坐标、身份证号、配置参数
元组的优势:
- 数据安全:防止意外修改
- 性能更好:比列表占用内存少,访问更快
- 可以作为字典的键(列表不行)
二、元组的特点
2.1 特点总结
特点 | 说明 | 注意点 |
有序 | 元素有固定顺序,可以索引访问 | 和列表一样 |
不可变 | 创建后不能增删改 | 这是和列表最大的区别 |
可重复 | 允许重复元素 | (1, 1, 2) 是合法的 |
异构 | 可以存不同类型的数据 | (1, "hello", True) |
2.2 元组 vs 列表
对比 | 元组 | 列表 |
语法 | (1, 2, 3) | [1, 2, 3] |
可变性 | 不可变 | 可变 |
性能 | 更快 | 稍慢 |
内存 | 更少 | 更多 |
安全性 | 高 | 低 |
作为字典键 | ✅ 可以 | ❌ 不可以 |
我的理解:
- 数据会变用列表
- 数据固定用元组
- 不确定时用列表(更灵活)
2.3 元组的内存结构
元组内存结构示意图:
三、创建元组
3.1 圆括号创建(最常用)
3.2 省略圆括号创建
3.3 tuple() 函数创建
四、元组的基本操作
4.1 索引访问
元组索引示意图:
4.2 切片操作
4.3 元组拼接和重复
五、元组的不可变性
元组不可变性示意图:
5.1 不可变的含义
5.2 元组中的可变元素
六、元组的组包与解包
6.1 组包(Packing)
组包过程示意图:
6.2 解包(Unpacking)
解包过程示意图:
6.3 组包与解包的结合使用
6.4 嵌套解包
七、元组的常用方法
常用方法表
方法 | 作用 | 示例 | 返回值 |
count() | 统计元素出现次数 | (1, 2, 2, 3).count(2) | 2 |
index() | 查找元素索引 | (1, 2, 3).index(2) | 1 |
len() | 获取长度 | len((1, 2, 3)) | 3 |
in | 判断元素是否存在 | 2 in (1, 2, 3) | True |
+ | 拼接元组 | (1, 2) + (3, 4) | (1, 2, 3, 4) |
* | 重复元组 | (1, 2) * 2 | (1, 2, 1, 2) |
八、元组的遍历
元组遍历流程图:
九、实际应用案例
9.1 学生成绩管理
学生成绩数据结构:
9.2 坐标点定位
9.3 颜色表示
十、遇到的问题和解决
问题1:单元素元组忘记加逗号
问题2:元组不可变的误解
问题3:解包时变量数不匹配
十一、主要是有些乱了.说真的.
- 创建一个包含星期一到星期日的元组,根据用户输入的数字(1-7)输出对应的星期几
- 交换两个变量的值,不使用临时变量(使用元组解包)
- 给定一个数字列表,计算并组包成元组存储(最大值,最小值,平均值)
- 使用元组存储学生的多门课程成绩,计算每个学生的总分和平均分
- 给定三个数字,使用元组组包后解包,找出其中的最大值和最小值
- 将两个元组合并,一个存储学生姓名,一个存储成绩,使用循环并行遍历输出
- 使用元组解包实现并行遍历多个列表(姓名、年龄、成绩)
Loading...
