Skip to content

Python 数据容器概览 ​

前面我们使用变量保存单个数据:

python
name = "小明"
score = 95

现在遇到一个新需求:保存全班同学的姓名,并在需要时逐个处理。如果继续定义单独的变量,代码会越来越难维护:

python
name1 = "小明"
name2 = "小红"
name3 = "小刚"

人数增加后,变量会越来越多,也不方便配合循环统一处理。

案例:批量处理学生姓名 ​

这时可以把多个姓名放进一个列表:

python
student_names = ["小明", "小红", "小刚"]

for name in student_names:
    print(name)

运行结果:

text
小明
小红
小刚

列表就是一种数据容器。它把多个数据放在一起,我们只需要管理一个变量,就能配合循环逐个处理其中的内容。

多个独立变量放入数据容器并通过循环批量处理的示意图

数据容器概念 ​

上面的需求说明:多个相关数据需要集中保存,并且要能配合循环批量处理。

数据容器可以先理解为:能够保存多个数据的数据类型。

容器中的每一份数据,通常叫作元素。例如,列表 student_names 中有 3 个字符串元素。

使用容器后,我们可以完成这些常见任务:

  1. 保存一组数据
  2. 查找需要的数据
  3. 增加、删除或修改数据
  4. 配合循环批量处理数据

不同任务对数据的要求不同。有的数据需要保持顺序,有的数据创建后不能修改,还有的数据不能重复。因此,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" 只会保留一份。

容器选择原则 ​

选择容器时,先回答四个问题:

  1. 数据是否需要按顺序保存?
  2. 创建后是否允许修改?
  3. 是否需要通过名称查找对应的数据?
  4. 是否需要自动去重?

可以先按下面的思路选择:

  • 保存一组姓名,并且后面还会增加或删除,使用列表
  • 保存一个不会改变的坐标,使用元组
  • 保存学生的姓名、年龄和成绩,使用字典
  • 保存不重复的课程名称,使用集合

容器之间没有谁一定更好。选择的关键是:它的特点是否符合当前数据的使用方式。

根据顺序、修改、键值查找和去重需求选择列表元组字典集合的决策图

常见问题 ​

混合类型元素 ​

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'>

后续学习路线 ​

接下来会按照下面的顺序学习:

  1. 列表:创建、取值、切片和增删改查
  2. 元组:不可修改的数据序列
  3. 字典:使用键值对组织数据
  4. 集合:去重和集合运算
  5. 综合练习:组合使用不同容器处理数据

小结 ​

本章先回答三个问题:

  1. 多个数据如何集中保存?使用数据容器
  2. 列表、元组、字典和集合有什么区别?看顺序、修改、键值查找和去重特点
  3. 如何选择容器?根据数据的使用需求判断

这一节只需要建立整体认识。后面的章节会分别讲解每种容器的具体操作。