Python 列表、元組、字典、集合 完整區(qū)別對比分析
更新時間:2026年07月24日 09:02:55 作者:可涵不會debug
在Python中,列表(list)、元組(tuple)、字典(dict)和集合(set)是四種非?;A且重要的數(shù)據(jù)結構,它們各自有其獨特的用途和特性,下面是對這四種數(shù)據(jù)結構的完整區(qū)別對比,感興趣的朋友跟隨小編一起看看吧
一、基礎總覽表(背誦版)
| 類型 | 符號 | 是否可變 | 有序性 | 存儲元素 | 允許重復 | 核心用途 |
|---|---|---|---|---|---|---|
| 列表 list | [] | ? 可變 | ? 有序 | 任意數(shù)據(jù)類型 | ? 允許重復 | 增刪改查、有序數(shù)組、臨時數(shù)據(jù)容器 |
| 元組 tuple | () | ? 不可變 | ? 有序 | 任意數(shù)據(jù)類型 | ? 允許重復 | 固定數(shù)據(jù)、函數(shù)返回多值、字典 key |
| 字典 dict | {k:v} | ? 可變 | ? 3.7 + 插入有序 | 鍵值對(key+value) | key 不可重復,value 可重復 | 映射關系,根據(jù) key 快速取值 |
| 集合 set | {} | ? 可變 | ? 無序 | 僅不可變類型(數(shù)字 / 字符串 / 元組) | ? 自動去重 | 去重、交集 / 并集 / 差集運算 |
二、逐個詳細拆解
1. 列表 list[]
特性
- 可變:支持增、刪、改元素
lst = [1, 2, 3] lst[0] = 99 # 修改 lst.append(4) # 新增 lst.pop() # 刪除
- 有序:按下標
lst[0]取值,插入順序永久保留 - 允許重復元素:
[1,1,2]合法 - 元素無類型限制,可嵌套列表、字典等可變對象
適用場景
- 需要頻繁修改、追加、刪除的數(shù)據(jù);
- 有序數(shù)據(jù)存儲(學生成績、文件路徑序列)。
2. 元組 tuple()
特性
- 不可變(核心特點):定義后不能修改、新增、刪除任何元素
t = (1,2,3) t[0] = 99 # 直接報錯 TypeError
- 有序:支持下標取值
t[0]、切片t[:2] - 允許重復元素
(1,1,2) - 因為不可變,可以作為字典的 key;列表不行
適用場景
- 數(shù)據(jù)不希望被修改(坐標、配置常量);
- 函數(shù)一次性返回多個返回值;
- 作為字典 key、集合內元素。
小細節(jié):單元素元組必須加逗號
(5,),(5)只是數(shù)字括號,不是元組。
3. 字典 dict{key: value}
特性
- 可變:可新增、修改、刪除鍵值對
- 有序:Python3.7 及以上,插入順序保留
- 存儲結構:
唯一鍵key : 任意值value- key 要求:必須是不可變類型(數(shù)字、字符串、元組),不能重復;重復 key 會覆蓋舊值
- value 無限制,可重復、可存列表 / 字典
- 不能用下標數(shù)字取值,只能通過
dict["key"]按鍵查找
d = {"name":"小明", "age":20}
d["age"] = 21 # 修改value
d["sex"] = "男" # 新增鍵值對適用場景
- 一對一映射關系:用戶信息、配置參數(shù)、ID 對應數(shù)據(jù);
- 需要根據(jù)名稱 / 標識快速查找內容。
4. 集合 set{1,2,3}
特性
- 可變集合 set,還有不可變版本
frozenset - 無序:沒有下標,不能通過
set[0]取值,每次打印順序隨機 - 自動去重:重復元素存入直接丟棄
s = {1,1,2,2,3} print(s) # {1,2,3} - 元素限制:只能存不可變類型(數(shù)字、字符串、元組),列表 / 字典不能放入集合
- 專屬能力:集合運算(交集、并集、差集)
a = {1,2,3} b = {3,4,5} print(a & b) # 交集 {3} print(a | b) # 并集 {1,2,3,4,5} print(a - b) # 差集 {1,2}
適用場景
- 快速對列表去重;
- 判斷兩個數(shù)據(jù)集重合、對比差異。
三、高頻易混考點
- 可變 vs 不可變核心區(qū)分
- 可變:list /dict/set → 內存原地修改,不生成新對象
- 不可變:tuple /str/int → 修改只能新建對象,原數(shù)據(jù)不變
- 哪些能做字典 key、集合元素? 只有不可變類型:int、float、str、tuple; list、dict、set 可變,禁止作為 key / 集合成員。
- 有序 vs 無序
- 有序:list、tuple、dict (3.7+),支持下標 / 按插入順序遍歷
- 無序:set,無下標,不記錄插入順序
- 去重需求優(yōu)先用集合
lst = list(set(原列表))一行完成去重(缺點:會打亂原有順序)
四、極簡一句話總結
- 列表:有序可改,通用數(shù)組;
- 元組:有序不可改,安全固定數(shù)據(jù);
- 字典:鍵值映射,按鍵快速查找;
- 集合:無序自動去重,用于數(shù)據(jù)對比、去重。
# 字典從 Python 3.7 開始有序
d = {}
d["c"] = 3
d["a"] = 1
d["b"] = 2
print(list(d.keys())) # ['c', 'a', 'b'] —— 和插入順序一致
# 集合依然無序
s = {"apple", "banana", "cat", 99999}
print(s)
# 隨機種子開啟后,每次打印順序完全不一樣所以"有序"是指:遍歷時,元素出現(xiàn)的順序和當初插入的順序一致。
到此這篇關于Python 列表、元組、字典、集合 完整區(qū)別對比的文章就介紹到這了,更多相關Python 列表、元組、字典、集合內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
Python+Tkinter實現(xiàn)股票K線圖的繪制
K線圖又稱蠟燭圖,常用說法是“K線”。K線是以每個分析周期的開盤價、最高價、最低價和收盤價繪制而成。本文將利用Python+Tkinter實現(xiàn)股票K線圖的繪制,需要的可以參考一下2022-08-08
淺析Python中常見數(shù)據(jù)脫敏技術應用與對比
數(shù)據(jù)脫敏通過對敏感數(shù)據(jù)進行轉換,確保其在保護隱私的同時仍能用于開發(fā),本文為大家整理了一些常見的數(shù)據(jù)脫敏技術,感興趣的小伙伴可以了解下2025-02-02
python中playwright截屏API的實現(xiàn)
無論是屏幕錄制,還是屏幕截圖,Playwright都提供了簡潔的方法實現(xiàn),本文就來詳細的介紹一下python中playwright截屏API的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下2026-01-01
Python通過Pygame實現(xiàn)一個經(jīng)典掃雷游戲
Pygame 是 Python 中一個功能強大的 2D 游戲開發(fā)庫,它提供了處理圖形、聲音、輸入和事件循環(huán)的完整工具集,本文通過 Pygame 實現(xiàn)一個經(jīng)典掃雷游戲項目,需要的朋友可以參考下2026-06-06
Python datetime和unix時間戳之間相互轉換的講解
今天小編就為大家分享一篇關于Python datetime和unix時間戳之間相互轉換的講解,小編覺得內容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-04-04

