前言

在 Python 编程中,容器是用于存储、组织和管理多个数据元素的核心数据结构,合理选择容器能大幅提升代码效率与可读性。
本文将详细讲解 Python 内置基础容器与 collections 扩展容器,梳理每种容器的核心特点、语法格式及适用场景,帮助开发者在实际开发中精准选型。

一、Python 内置基础容器

内置容器是 Python 原生支持、无需额外导入即可使用的数据结构,也是日常开发中最常用的类型。

  1. 列表 list
  • 定义语法:使用方括号 [] 定义,元素之间用逗号分隔
  • 核心特点1. 有序存储,支持下标索引访问
  1. 可变类型,支持增、删、改、查操作
  2. 元素可重复,支持任意数据类型嵌套
  3. 查找效率较低,尾部增删效率高

python

列表定义与操作

lst = [1, 2, “Python”, True, [3, 4]]

新增元素

lst.append(5)

修改元素

lst[0] = 10

删除元素

lst.pop()
print(lst)

  • 适用场景
    存储有序且需要频繁修改的数据,如用户列表、待办事项、动态数组、数据缓存等。
  1. 元组 tuple
  • 定义语法:使用小括号 () 定义,单个元素需加逗号
  • 核心特点1. 有序存储,支持下标访问
  1. 不可变类型,创建后无法修改元素
  2. 可重复、可嵌套,占用内存更小
  3. 可作为字典的键使用

python

元组定义

tpl = (1, 2, “Python”, (3, 4))

单个元素元组

tpl_single = (1,)

仅支持查询,不支持增删改

print(tpl[1])

  • 适用场景
    保护数据不被意外修改、函数多返回值、作为字典键、配置常量存储。
  1. 字典 dict
  • 定义语法:使用 {key: value} 键值对格式定义
  • 核心特点1. 键值对映射结构,查找速度极快(O(1))
  1. 键必须唯一且不可变,值无类型限制
  2. Python 3.7+ 保留插入顺序,旧版本无序
  3. 支持动态增删键值对

python

字典定义与操作

dic = {“name”: “张三”, “age”: 20, “gender”: “男”}

新增/修改键值对

dic[“age”] = 21

访问值

print(dic[“name”])

删除键值对

del dic[“gender”]

  • 适用场景
    存储映射关系数据、配置信息、JSON 数据处理、快速查找与统计。
  1. 集合 set
  • 定义语法:使用大括号 {} 定义,空集合需用 set()
  • 核心特点1. 无序存储,不支持下标访问
  1. 自动去重,元素唯一不可重复
  2. 支持交集、并集、差集等数学运算
  3. 可变类型,可增删元素

python

集合定义与运算

s1 = {1, 2, 3, 3, 4}
s2 = {3, 4, 5, 6}

交集

print(s1 & s2)

并集

print(s1 | s2)

差集

print(s1 - s2)

  • 适用场景
    数据去重、成员关系判断、集合逻辑运算、去重统计。
  1. 字符串 str
  • 定义语法:使用单引号 ‘’ 或双引号 “” 定义
  • 核心特点1. 有序字符序列,支持下标与切片
  1. 不可变类型,修改会生成新字符串
  2. 支持拼接、分割、替换等文本操作

python

s = “Python容器”

切片操作

print(s[0:6])

字符串拼接

s_new = s + “详解”

  • 适用场景
    文本存储、日志打印、数据格式化、正则匹配、文件读写。
  1. 冰冻集合 frozenset
  • 定义语法: frozenset(可迭代对象)
  • 核心特点
    不可变版本的集合,保留集合去重、集合运算特性,无法增删元素。

python

fs = frozenset([1,2,2,3])

  • 适用场景
    需要将集合作为字典键或嵌套进其他集合时使用。

二、collections 扩展容器

collections 是 Python 内置标准库,提供了比基础容器更强大的扩展结构,处理复杂业务更高效。

  1. deque 双端队列
  • 特点:两端增删元素均为 O(1) 效率,远优于列表
  • 适用场景:队列、栈、滑动窗口、生产者消费者模型

python

from collections import deque
dq = deque([1,2,3])
dq.appendleft(0)
dq.pop()

  1. defaultdict 默认值字典
  • 特点:访问不存在的键不会报错,自动赋予默认值
  • 适用场景:数据统计、分组计数、避免键不存在异常

python

from collections import defaultdict
dd = defaultdict(int)
dd[“count”] += 1

  1. OrderedDict 有序字典
  • 特点:严格保留元素插入顺序
  • 适用场景:Python 3.6 以下版本需要有序字典的场景
  1. namedtuple 具名元组
  • 特点:带字段名的轻量级元组,不可变、省内存
  • 适用场景:替代简单类、结构化数据存储

python

from collections import namedtuple
Student = namedtuple(“Student”, [“name”, “age”])
s = Student(“张三”, 20)
print(s.name)

  1. Counter 计数器
  • 特点:专门用于统计元素出现次数
  • 适用场景:词频统计、元素频次分析

python

from collections import Counter
c = Counter(“aabbbcccc”)
print©

三、容器类型选择总结

需求场景 推荐容器
有序、频繁增删改查 list
数据不可变、保护数据 tuple
键值映射、快速查找 dict
去重、集合运算 set
高效队列/栈操作 deque
统计计数、避免键不存在报错 defaultdict/Counter
轻量级结构化数据 namedtuple

结语

Python 容器类型覆盖了绝大多数开发场景,基础容器满足通用需求, collections 扩展容器则针对复杂场景做了优化。
在实际编码中,根据数据是否可变、是否有序、是否需要去重、操作效率等维度选择容器,能让代码更简洁、高效、易维护。

更多推荐