Python 的核心數據結構是內置的基礎存儲容器,設計簡潔且功能強大,覆蓋了絕大多數編程場景的需求。它們的核心特點是 “開箱即用、高效靈活” ,主要包括 列表(List)、元組(Tuple)、字典(Dictionary)、集合(Set) ,再加上基礎的字符串(String),共同構成了 Python 數據處理的基石。
以下從 定義、核心特性、常用操作、適用場景 四個維度,詳細介紹每個核心數據結構:
一、列表(List):有序可變的“萬能容器”
1. 定義與外觀
列表是 Python 最常用的數據結構,用於存儲 有序、可修改 的元素集合,用方括號 [] 定義,元素之間用逗號分隔。
# 示例:存儲不同類型的元素(Python 列表支持異構元素)
fruits = ["蘋果", "香蕉", 100, True, 3.14]
nums = [1, 2, 3, 4, 5]
2. 核心特性
- 有序性:元素按插入順序排列,支持通過索引(下標)訪問(索引從 0 開始);
- 可變性:可動態添加、刪除、修改元素(不創建新列表,直接修改原容器);
- 異構性:可存儲不同類型的元素(字符串、數字、布爾值、甚至其他列表);
- 可重複:允許存儲重複元素。
3. 常用操作(高頻)
|
操作
|
代碼示例
|
功能説明
|
|
訪問元素
|
|
獲取索引 0 的元素(輸出:蘋果)
|
|
切片(截取子列表)
|
|
獲取索引 1~3 的元素(輸出:[2,3,4])
|
|
添加元素(末尾)
|
|
末尾添加元素(列表長度+1)
|
|
插入元素(指定位置)
|
|
在索引 1 處插入元素
|
|
刪除元素(按值)
|
|
刪除第一個匹配的值
|
|
刪除元素(按索引)
|
|
刪除索引 2 的元素
|
|
反轉列表
|
|
原地反轉列表(輸出:[5,4,3,2,1])
|
|
排序
|
|
原地升序排序(默認), |
|
統計元素出現次數
|
|
統計 3 出現的次數(輸出:1)
|
4. 適用場景
- 存儲需要按順序訪問、頻繁修改的數據(如購物車商品、任務列表);
- 臨時存儲多個異構元素(如接口返回的混合類型數據);
- 需要動態增減元素的場景(如用户輸入的多條數據)。
二、元組(Tuple):有序不可變的“安全容器”
1. 定義與外觀
元組是 有序、不可修改 的元素集合,用圓括號 () 定義(單個元素需加逗號,避免歧義)。
# 示例:存儲固定不變的數據
coordinates = (10.0, 20.0) # 座標(x,y)
person_info = ("小明", 25, "北京") # 個人信息(姓名、年齡、城市)
single_tuple = (5,) # 單個元素的元組(必須加逗號)
2. 核心特性
- 有序性:與列表一致,支持索引訪問和切片;
- 不可變性:創建後無法添加、刪除、修改元素(若元素是可變類型如列表,可修改元素內部值,但元組結構不變);
- 異構性:支持存儲不同類型元素;
- 可重複:允許重複元素;
- 輕量高效:比列表佔用內存更少,訪問速度更快。
3. 常用操作(高頻)
|
操作
|
代碼示例
|
功能説明
|
|
訪問元素
|
|
獲取索引 0 的元素(輸出:小明)
|
|
切片(截取子元組)
|
|
獲取索引 1 及以後的元素(輸出:(25, "北京"))
|
|
統計元素出現次數
|
|
統計 2 出現的次數(輸出:2)
|
|
查找元素索引
|
|
查找元素的第一個索引(輸出:2)
|
4. 適用場景
- 存儲固定不變的數據(如座標、配置參數、常量);
- 函數返回多個值(本質是返回元組,可解構賦值:
name, age = func()); - 作為字典的鍵(元組不可變,列表不可作為字典鍵);
- 需要數據安全性的場景(避免誤修改核心數據)。
三、字典(Dictionary):無序鍵值對的“映射容器”
1. 定義與外觀
字典是 無序(Python 3.7+ 後保證插入順序)、鍵值對(key-value) 存儲的容器,用大括號 {} 定義,鍵(key)唯一且不可變,值(value)可任意類型。
# 示例:存儲鍵值映射關係的數據
student = {
"id": 101,
"name": "小紅",
"score": 95,
"courses": ["數學", "英語"] # 值可以是列表等可變類型
}
empty_dict = {} # 空字典
2. 核心特性
- 映射性:通過唯一的 key 快速查找 value(查詢效率遠高於列表);
- 鍵不可變:key 必須是不可變類型(字符串、數字、元組),不能是列表、字典等可變類型;
- 值可任意:value 可以是任意類型(包括字典、列表等可變類型);
- 鍵唯一:重複的 key 會被覆蓋(後定義的生效)。
3. 常用操作(高頻)
|
操作
|
代碼示例
|
功能説明
|
|
訪問值(按 key)
|
|
獲取 key 為 "name" 的值(輸出:小紅)
|
|
安全訪問值
|
|
無 key 時返回默認值(輸出:未知)
|
|
添加/修改鍵值對
|
|
有 key 則修改,無 key 則添加
|
|
刪除鍵值對
|
|
刪除 key 為 "courses" 的鍵值對
|
|
獲取所有 key
|
|
返回所有 key 的視圖(輸出:dict_keys(['id','name','score','gender']))
|
|
獲取所有 value
|
|
返回所有 value 的視圖
|
|
獲取所有鍵值對
|
|
返回所有 (key, value) 元組(遍歷常用)
|
|
清空字典
|
|
清空所有鍵值對
|
4. 適用場景
- 存儲具有映射關係的數據(如用户信息、配置項、接口返回的 JSON 數據);
- 需要快速通過 key 查詢數據的場景(如根據 ID 查找用户);
- 存儲多維度數據(如商品的名稱、價格、庫存等屬性)。
四、集合(Set):無序唯一的“去重容器”
1. 定義與外觀
集合是 無序、無重複元素 的容器,用大括號 {} 或 set() 函數定義(空集合必須用 set(),不能用 {},否則是字典)。
# 示例:存儲唯一不重複的數據
tags = {"Python", "編程", "入門"} # 標籤集合(自動去重)
nums = set([1, 2, 2, 3, 3, 3]) # 從列表創建集合(輸出:{1,2,3})
empty_set = set() # 空集合
2. 核心特性
- 唯一性:自動去除重複元素(創建時即去重);
- 無序性:無固定順序,不支持索引訪問和切片;
- 元素不可變:集合中的元素必須是不可變類型(字符串、數字、元組),不能是列表、字典等可變類型;
- 支持集合運算:交集、並集、差集等(類似數學中的集合操作)。
3. 常用操作(高頻)
|
操作
|
代碼示例
|
功能説明
|
|
添加元素
|
|
添加元素(已存在則不生效)
|
|
刪除元素(存在則刪)
|
|
刪除元素(不存在則報錯)
|
|
安全刪除元素
|
|
刪除元素(不存在則不報錯)
|
|
交集(共同元素)
|
|
輸出:{2,3}(等價於 |
|
並集(所有元素)
|
`{1,2,3}
|
{2,3,4}`
|
|
差集(獨有元素)
|
|
輸出:{1}(等價於 |
|
對稱差集(互不相同)
|
|
輸出:{1,4}(等價於 |
|
判斷子集
|
|
判斷是否是子集(輸出:True)
|
4. 適用場景
- 數據去重(如用户輸入的重複標籤、列表中的重複元素);
- 集合運算(如查找兩個列表的共同元素、篩選獨有元素);
- 快速判斷元素是否存在(
in操作效率遠高於列表,如if "Python" in tags)。
五、字符串(String):有序不可變的“文本容器”
字符串雖常被視為“文本類型”,但本質是 有序、不可變的字符集合,具備數據結構的核心特性,也是 Python 核心數據結構之一。
1. 定義與外觀
用單引號 ''、雙引號 "" 或三引號 """ """(多行文本)定義。
name = "Python"
intro = '一門簡潔的編程語言'
multi_line = """第一行
第二行
第三行""" # 多行字符串
2. 核心特性
- 有序性:支持索引訪問和切片(類似列表、元組);
- 不可變性:創建後無法修改單個字符(如
name[0] = "p"會報錯); - 可拼接/重複:通過
+拼接、*重複生成新字符串。
3. 常用操作(高頻)
|
操作
|
代碼示例
|
功能説明
|
|
訪問字符
|
|
獲取索引 2 的字符(輸出:t)
|
|
切片
|
|
獲取索引 1~3 的字符(輸出:yth)
|
|
拼接字符串
|
|
拼接生成新字符串(輸出:Python 入門)
|
|
重複字符串
|
|
重複 2 次(輸出:PythonPython)
|
|
查找子串
|
|
查找子串索引(輸出:2,不存在返回 -1)
|
|
替換子串
|
|
替換子串(輸出:Java)
|
|
分割字符串
|
|
按分隔符分割(輸出:['a','b','c'])
|
|
去除首尾空格
|
|
去除首尾空格(輸出:hello)
|
|
大小寫轉換
|
|
轉小寫/大寫
|
4. 適用場景
- 存儲和處理文本數據(如用户輸入、文件內容、接口返回的文本);
- 字符串格式化(如拼接用户信息、生成 SQL 語句)。
六、核心數據結構對比表(面試高頻)
|
數據結構
|
有序性
|
可變性
|
元素唯一性
|
核心特點
|
適用場景
|
|
列表(List)
|
是
|
是
|
否
|
萬能容器,動態增減
|
有序修改、異構元素存儲
|
|
元組(Tuple)
|
是
|
否
|
否
|
安全高效,不可修改
|
固定數據、函數多返回值、字典鍵
|
|
字典(Dict)
|
是(3.7+)
|
是(值可變)
|
鍵唯一
|
鍵值映射,查詢高效
|
映射關係數據、JSON 類數據
|
|
集合(Set)
|
否
|
是(元素可增刪)
|
是
|
自動去重,集合運算
|
數據去重、元素存在判斷、集合運算
|
|
字符串(Str)
|
是
|
否
|
否
|
文本處理,不可修改
|
文本存儲、字符串格式化
|
七、核心總結(入門+面試重點)
- 有序 vs 無序:列表、元組、字符串是有序(支持索引/切片);集合是無序(不支持索引);字典 3.7+ 後有序,之前無序;
- 可變 vs 不可變:列表、字典、集合是可變(可修改元素);元組、字符串是不可變(創建後無法修改);
- 查詢效率:字典、集合的查詢效率(
in操作)是 O(1)(哈希表實現),遠高於列表、元組的 O(n); - 選型原則:
- 需有序修改 → 列表;
- 需有序不可修改 → 元組;
- 需鍵值映射 → 字典;
- 需去重/集合運算 → 集合;
- 需處理文本 → 字符串。
掌握這 5 種核心數據結構,就能應對 Python 80% 以上的開發場景,也是面試中高頻考察的基礎知識點。