當前位置: 首頁>>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/zh-tw/article/4843.html,轉載請注明來源鏈接。