2026-10-24 13:25:08
Python中常见的数据结构及其特点如下:
列表(List)
特点:可变的有序序列,元素类型可不同,支持动态增删改操作。
操作示例:my_list = [1, 'hello', 3.14]my_list.append(5) # 添加元素 → [1, 'hello', 3.14, 5]my_list[1] = 'world' # 修改元素 → [1, 'world', 3.14, 5]
适用场景:需要频繁修改数据的场景(如动态数据收集、队列/栈操作)。
注意事项:多线程环境下需同步操作以避免竞争条件。
元组(Tuple)
特点:不可变的有序序列,创建后内容无法修改,元素类型可不同。
操作示例:my_tuple = (1, 'hello', 3.14)# my_tuple[1] = 'world' # 报错!元组不支持修改print(my_tuple[0]) # 输出: 1
适用场景:存储固定数据(如坐标点、配置项)、作为字典键或集合元素。
优势:比列表更安全(防止意外修改),创建和访问速度略快。
字典(Dictionary)
特点:键值对的无序集合(Python 3.7+保持插入顺序),键必须唯一且不可变(可哈希)。
操作示例:my_dict = {'name': 'Alice', 'age': 30}my_dict['age'] = 31 # 修改值my_dict['city'] = 'NY' # 添加键值对 → {'name': 'Alice', 'age': 31, 'city': 'NY'}
底层机制:基于哈希表实现,平均查找时间复杂度为O(1)。
适用场景:通过标识符快速查找数据(如电话簿、缓存)。
限制:键必须是可哈希类型(如字符串、元组),不可变对象。
集合(Set)
特点:无序且不重复的元素集合,元素必须可哈希。
操作示例:my_set = {1, 2, 3, 2} # 自动去重 → {1, 2, 3}another_set = {3, 4, 5}print(my_set.union(another_set)) # 并集 → {1, 2, 3, 4, 5}print(my_set.intersection(another_set)) # 交集 → {3}
适用场景:数据去重、集合运算(交并差)。
操作效率:添加、删除、查找的平均时间复杂度为O(1)。
collections模块中的高效工具
deque(双端队列):支持从两端快速添加/删除元素(O(1)复杂度),适用于日志流、缓存管理。from collections import dequehistory = deque(maxlen=5)history.append('page1')history.appendleft('page0') # 从左侧添加 → deque(['page0', 'page1'], maxlen=5)
Counter(计数器):统计元素出现次数,简化计数逻辑。from collections import Counterwords = ['apple', 'banana', 'apple']word_counts = Counter(words) # Counter({'apple': 2, 'banana': 1})
namedtuple(命名元组):创建带有命名字段的元组子类,提升代码可读性。from collections import namedtuplePoint = namedtuple('Point', ['x', 'y'])p = Point(10, 20)print(p.x) # 输出: 10
其他专用数据结构
heapq(堆队列):实现优先队列,快速获取最小/最大元素。
array(数组):存储同类型数据的紧凑数组,节省内存并提高数值处理性能。
总结:Python的数据结构设计兼顾灵活性与效率,基础结构(列表、元组、字典、集合)覆盖大多数场景,而collections模块提供的工具(如deque、Counter)则针对特定需求优化。合理选择数据结构可显著提升代码性能与可维护性。