学会C++后学Python之 基础容器:列表、集合、元组与字典
这里写目录标题
一、前言
对于有 C/C++ 基础的同学来说,Python 的四种基础容器——列表(list)、集合(set)、元组(tuple) 和 字典(dict)——是入门中最关键的部分。
它们与 C++ 的 std::vector、std::unordered_set、std::tuple、std::map/std::unordered_map 有相似之处,但同时具备更灵活的语法与动态特性。
本文将从语法、特性和对比角度深入讲解这四种容器,帮助你快速掌握 Python 的核心数据结构。
二、列表(list)
1. 概念
列表是一个有序、**可修改(可变)**的序列,类似 C++ 的 std::vector。
它可以存放任意类型的元素,甚至可以在同一个列表中混合多种类型。
2. 创建与基本操作
# 创建列表
nums = [10, 20, 30, 40]
# 访问元素
print(nums[0]) # 输出 10
print(nums[-1]) # 输出 40,负索引表示从后往前数
# 修改元素
nums[1] = 99
# 添加元素
nums.append(50) # 尾部添加
nums.insert(1, 15) # 在索引 1 处插入
# 删除元素
nums.pop() # 删除并返回最后一个元素
nums.remove(99) # 按值删除第一个出现的 99
del nums[0] # 按索引删除
# 遍历
for x in nums:
print(x)
3. 常用函数与切片
nums = [1, 2, 3, 4]
print(len(nums)) # 长度
print(sum(nums)) # 求和
print(max(nums)) # 最大值
print(sorted(nums)) # 排序,不改变原列表
# 切片操作(非常强大)
print(nums[1:3]) # 左闭右开打印区间 [2, 3]
print(nums[::-1]) # 反转 [4, 3, 2, 1]
4. 特点总结
- 支持随机访问与下标操作。
- 可以动态增长或缩减。
- 支持多种便捷操作(append、insert、pop、切片等)。
- 常用于需要频繁修改或遍历的有序数据。
三、集合(set)
1. 概念
集合是一个无序、元素唯一的容器,类似 C++ 的 std::unordered_set。
常用于去重、集合运算等场景。
2. 基本用法
# 创建集合
s = {1, 2, 3, 3, 2}
print(s) # 输出 {1, 2, 3} 自动去重
# 添加与删除
s.add(4)
s.discard(2)
s.remove(3) # 若元素不存在会报错,discard 不会
s.clear() # 清空集合
3. 集合运算
a = {1, 2, 3}
b = {3, 4, 5}
print(a | b) # 并集 {1, 2, 3, 4, 5}
print(a & b) # 交集 {3}
print(a - b) # 差集 {1, 2}
print(a ^ b) # 对称差集 {1, 2, 4, 5}
4. 特点总结
- 无序,不支持索引访问。
- 元素自动去重。
- 集合运算非常简洁高效。
- 常用于快速判断成员关系或数据去重。
四、元组(tuple)
1. 概念
元组是一个**有序但不可修改(不可变)**的序列。
它类似 C++ 的 std::tuple 或 const std::vector。
常用于“函数多返回值”、“键不可变的映射”等场景。
2. 基本用法
# 创建元组
t = (1, 2, 3)
print(t[0]) # 输出 1
# 不可修改
# t[1] = 10 # 报错:TypeError
# 元组解包
x, y, z = t
print(x, y, z) # 输出 1 2 3
# 单元素元组要加逗号
single = (1,)
3. 特点总结
- 与列表类似,但内容不可修改。
- 占用内存更少,访问速度略快。
- 常用于固定结构的数据或函数返回值。
五、字典(dict)
1. 概念
字典是一种键值对(key-value)映射结构,类似 C++ 的 std::unordered_map 或 std::map。
在 Python 中,字典几乎无处不在,是最常用的数据结构之一。
2. 基本操作
# 创建字典
person = {"name": "Alice", "age": 20, "city": "Beijing"}
# 访问与修改
print(person["name"]) # 输出 Alice
person["age"] = 21 # 修改
person["gender"] = "F" # 新增键值对
# 删除
del person["city"]
# 遍历
for key, value in person.items():
print(key, value)
# 判断键是否存在
if "age" in person:
print("存在")
# 获取默认值(避免KeyError)
print(person.get("height", "not found"))
3. 特点总结
- 键必须唯一且不可变(常用字符串或数字作为键)。
- 值可以是任意类型。
- 从 Python 3.7 开始,字典默认保持插入顺序。
- 是实现配置、数据结构、对象属性等的基础工具。
六、对比总结表
| 类型 | 是否有序 | 是否可变 | 是否允许重复 | 常见符号 | 类似 C++ 容器 |
|---|---|---|---|---|---|
| list | ✅ 有序 | ✅ 可变 | ✅ 允许 | [] | std::vector |
| tuple | ✅ 有序 | ❌ 不可变 | ✅ 允许 | () | std::tuple |
| set | ❌ 无序 | ✅ 可变 | ❌ 唯一 | {} 或 set() | std::unordered_set |
| dict | ✅(Python 3.7+) | ✅ 可变 | 键唯一 | {} | std::unordered_map |
七、学习建议(针对 C/C++ 程序员)
-
优先掌握 list 与 dict:它们在 Python 中使用最频繁。
-
理解可变与不可变的概念,这对写函数、拷贝数据非常重要。
-
充分利用 Python 的动态特性,例如:
- 切片
a[::2] - 解包
x, y, z = t - 字典推导
{k: v for k, v in items}
- 切片
-
学会用 for-in 遍历容器,Python 不需要手动控制索引。
八、结语
Python 的这四种基础容器是理解更高层数据结构(如列表推导、生成器、类、Pandas DataFrame 等)的关键。
从 C++ 过渡到 Python,会明显感受到语言在抽象层次与灵活性上的提升。
掌握它们,就等于掌握了 Python 编程的“地基”。
免责声明:
本文内容仅供学习与参考,作者不对因使用本文示例代码所产生的任何后果负责。
封面图来源于网络,如有侵权,请联系删除!
更多推荐


所有评论(0)