Python 数据容器概览
前面我们使用变量保存单个数据:
python
name = "小明"
score = 95现在遇到一个新需求:保存全班同学的姓名,并在需要时逐个处理。如果继续定义单独的变量,代码会越来越难维护:
python
name1 = "小明"
name2 = "小红"
name3 = "小刚"人数增加后,变量会越来越多,也不方便配合循环统一处理。
案例:批量处理学生姓名
这时可以把多个姓名放进一个列表:
python
student_names = ["小明", "小红", "小刚"]
for name in student_names:
print(name)运行结果:
text
小明
小红
小刚列表就是一种数据容器。它把多个数据放在一起,我们只需要管理一个变量,就能配合循环逐个处理其中的内容。
数据容器概念
上面的需求说明:多个相关数据需要集中保存,并且要能配合循环批量处理。
数据容器可以先理解为:能够保存多个数据的数据类型。
容器中的每一份数据,通常叫作元素。例如,列表 student_names 中有 3 个字符串元素。
使用容器后,我们可以完成这些常见任务:
- 保存一组数据
- 查找需要的数据
- 增加、删除或修改数据
- 配合循环批量处理数据
不同任务对数据的要求不同。有的数据需要保持顺序,有的数据创建后不能修改,还有的数据不能重复。因此,Python 提供了多种容器。
常用数据容器
Python 提供了列表、元组、字典和集合四种常用容器,分别适合不同的数据组织方式。
| 容器 | 常用写法 | 主要特点 | 常见场景 |
|---|---|---|---|
列表 list | ["小明", "小红"] | 有顺序,可以修改 | 保存并维护一组同类数据 |
元组 tuple | ("北京", 39.9) | 有顺序,创建后不能修改 | 保存不希望被改动的数据 |
字典 dict | {"name": "小明"} | 使用键和值保存数据 | 保存学生、商品等有明确字段的数据 |
集合 set | {"Python", "MySQL"} | 元素不重复,不支持按位置取值 | 数据去重、集合运算 |
先看四种容器最基本的写法:
python
# 列表:保存多个学生姓名,后续可以增删改
student_names = ["小明", "小红", "小刚"]
# 元组:保存一个固定的坐标
position = (10, 20)
# 字典:使用字段名称保存一个学生的信息
student = {"name": "小明", "score": 95}
# 集合:重复的课程名称只会保留一份
courses = {"Python", "MySQL", "Python"}
print(student_names)
print(position)
print(student)
print(courses)集合没有固定顺序,因此最后一行的显示顺序可能不同,但重复的 "Python" 只会保留一份。
容器选择原则
选择容器时,先回答四个问题:
- 数据是否需要按顺序保存?
- 创建后是否允许修改?
- 是否需要通过名称查找对应的数据?
- 是否需要自动去重?
可以先按下面的思路选择:
- 保存一组姓名,并且后面还会增加或删除,使用列表
- 保存一个不会改变的坐标,使用元组
- 保存学生的姓名、年龄和成绩,使用字典
- 保存不重复的课程名称,使用集合
容器之间没有谁一定更好。选择的关键是:它的特点是否符合当前数据的使用方式。
常见问题
混合类型元素
Python 容器可以同时保存不同类型的数据:
python
student = ["小明", 18, 95.5, True]不过在实际编程中,仍然要让数据结构保持清楚。看到变量名时,最好能知道容器里保存的是什么。
空字典与空集合
{} 表示空字典,不是空集合:
python
empty_dict = {}
empty_set = set()
print(type(empty_dict))
print(type(empty_set))运行结果:
text
<class 'dict'>
<class 'set'>后续学习路线
接下来会按照下面的顺序学习:
- 列表:创建、取值、切片和增删改查
- 元组:不可修改的数据序列
- 字典:使用键值对组织数据
- 集合:去重和集合运算
- 综合练习:组合使用不同容器处理数据
小结
本章先回答三个问题:
- 多个数据如何集中保存?使用数据容器
- 列表、元组、字典和集合有什么区别?看顺序、修改、键值查找和去重特点
- 如何选择容器?根据数据的使用需求判断
这一节只需要建立整体认识。后面的章节会分别讲解每种容器的具体操作。