当前位置: 首页>>AGI专栏>>正文


Python常用数据结构总结

以下是 Python 常用数据结构总结,涵盖基础类型、高级容器及适用场景,帮助快速掌握核心用法与特性对比:

一、基础数据结构

1. 列表(List)

  • 特点:有序、可变、允许重复元素。
  • 常用操作
    nums = [1, 2, 3]
    nums.append(4)       # 末尾添加 → [1, 2, 3, 4]
    nums.insert(0, 0)    # 插入 → [0, 1, 2, 3, 4]
    nums.pop()           # 移除末尾 → 4
    nums[1:3] = [10, 20] # 切片修改 → [0, 10, 20, 3]
  • 适用场景:动态数据集合,频繁增删或修改元素。

2. 元组(Tuple)

  • 特点:有序、不可变、允许重复元素。
  • 常用操作
    point = (3, 4)
    x, y = point         # 解包 → x=3, y=4
  • 适用场景:存储不可变数据(如配置项)、函数多返回值。

3. 字典(Dict)

  • 特点:键值对、无序(Python 3.7+ 保持插入顺序)、键唯一。
  • 常用操作
    user = {"name": "Alice", "age": 30}
    user["email"] = "alice@example.com"  # 添加键值对
    age = user.get("age", 0)             # 安全获取值
    for key, value in user.items():      # 遍历键值对
        print(key, value)
  • 适用场景:快速查找、关联数据存储(如JSON数据)。

4. 集合(Set)

  • 特点:无序、元素唯一、支持集合运算。
  • 常用操作
    a = {1, 2, 3}
    b = {3, 4, 5}
    a | b   # 并集 → {1, 2, 3, 4, 5}
    a & b   # 交集 → {3}
  • 适用场景:去重、成员检测、数学集合操作。

二、高级数据结构

1. 双端队列(deque)

  • 模块collections.deque
  • 特点:线程安全、高效头尾插入/删除(O(1) 时间复杂度)。
  • 示例
    from collections import deque
    dq = deque([1, 2, 3])
    dq.appendleft(0)  # 左端添加 → deque([0, 1, 2, 3])
    dq.pop()          # 右端移除 → 3
  • 适用场景:队列/栈实现、滑动窗口算法。

2. 堆(Heap)

  • 模块heapq
  • 特点:实现最小堆,堆顶元素始终最小。
  • 示例
    import heapq
    heap = []
    heapq.heappush(heap, 3)  # 添加元素 → [3]
    heapq.heappop(heap)      # 弹出最小 → 3
  • 适用场景:优先队列、Top K 问题。

3. 命名元组(namedtuple)

  • 模块collections.namedtuple
  • 特点:具名字段的元组,增强可读性。
  • 示例
    from collections import namedtuple
    Point = namedtuple("Point", ["x", "y"])
    p = Point(3, 4)
    print(p.x, p.y)  # 3 4
  • 适用场景:替代简单类,数据记录(如CSV行)。

4. 计数器(Counter)

  • 模块collections.Counter
  • 特点:统计元素出现次数。
  • 示例
    from collections import Counter
    words = ["apple", "banana", "apple"]
    counter = Counter(words)  # {"apple": 2, "banana": 1}
  • 适用场景:频率统计、词频分析。

三、数据结构对比

结构 有序性 可变性 元素唯一性 查找效率 典型用途
列表(list) 可变 允许重复 O(n) 动态集合、序列操作
元组(tuple) 不可变 允许重复 O(n) 不可变数据存储
字典(dict) 无(Python <3.7)
有(Python 3.7+)
可变 键唯一 O(1) 键值映射、快速查找
集合(set) 可变 元素唯一 O(1) 去重、集合运算

四、选择原则

  1. 需要快速查找 → 字典、集合。
  2. 保持插入顺序 → 列表(Python 3.7+ 的字典也保持顺序)。
  3. 不可变数据 → 元组。
  4. 高效头尾操作 → deque
  5. 元素频率统计 → Counter

五、实用技巧

  • 列表推导式:快速生成列表。
    squares = [x**2 for x in range(10)]
  • 字典推导式:快速构建字典。
    word_lengths = {word: len(word) for word in ["apple", "banana"]}
  • 合并字典(Python 3.9+):
    dict1 = {"a": 1}
    dict2 = {"b": 2}
    merged = dict1 | dict2  # {"a": 1, "b": 2}

掌握这些数据结构及其适用场景,能显著提升代码效率与可读性。根据需求选择最合适的结构,是Python编程的核心技能之一!

本文由《纯净天空》出品。文章地址: https://vimsky.com/article/4843.html,转载请注明来源链接。