Python 列表、元组、字典、集合 完整区别对比分析
更新时间:2026年07月24日 09:02:55 作者:可涵不会debug
在Python中,列表(list)、元组(tuple)、字典(dict)和集合(set)是四种非常基础且重要的数据结构,它们各自有其独特的用途和特性,下面是对这四种数据结构的完整区别对比,感兴趣的朋友跟随小编一起看看吧
一、基础总览表(背诵版)
| 类型 | 符号 | 是否可变 | 有序性 | 存储元素 | 允许重复 | 核心用途 |
|---|---|---|---|---|---|---|
| 列表 list | [] | ✅ 可变 | ✅ 有序 | 任意数据类型 | ✅ 允许重复 | 增删改查、有序数组、临时数据容器 |
| 元组 tuple | () | ❌ 不可变 | ✅ 有序 | 任意数据类型 | ✅ 允许重复 | 固定数据、函数返回多值、字典 key |
| 字典 dict | {k:v} | ✅ 可变 | ✅ 3.7 + 插入有序 | 键值对(key+value) | key 不可重复,value 可重复 | 映射关系,根据 key 快速取值 |
| 集合 set | {} | ✅ 可变 | ❌ 无序 | 仅不可变类型(数字 / 字符串 / 元组) | ❌ 自动去重 | 去重、交集 / 并集 / 差集运算 |
二、逐个详细拆解
1. 列表 list[]
特性
- 可变:支持增、删、改元素
lst = [1, 2, 3] lst[0] = 99 # 修改 lst.append(4) # 新增 lst.pop() # 删除
- 有序:按下标
lst[0]取值,插入顺序永久保留 - 允许重复元素:
[1,1,2]合法 - 元素无类型限制,可嵌套列表、字典等可变对象
适用场景
- 需要频繁修改、追加、删除的数据;
- 有序数据存储(学生成绩、文件路径序列)。
2. 元组 tuple()
特性
- 不可变(核心特点):定义后不能修改、新增、删除任何元素
t = (1,2,3) t[0] = 99 # 直接报错 TypeError
- 有序:支持下标取值
t[0]、切片t[:2] - 允许重复元素
(1,1,2) - 因为不可变,可以作为字典的 key;列表不行
适用场景
- 数据不希望被修改(坐标、配置常量);
- 函数一次性返回多个返回值;
- 作为字典 key、集合内元素。
小细节:单元素元组必须加逗号
(5,),(5)只是数字括号,不是元组。
3. 字典 dict{key: value}
特性
- 可变:可新增、修改、删除键值对
- 有序:Python3.7 及以上,插入顺序保留
- 存储结构:
唯一键key : 任意值value- key 要求:必须是不可变类型(数字、字符串、元组),不能重复;重复 key 会覆盖旧值
- value 无限制,可重复、可存列表 / 字典
- 不能用下标数字取值,只能通过
dict["key"]按键查找
d = {"name":"小明", "age":20}
d["age"] = 21 # 修改value
d["sex"] = "男" # 新增键值对适用场景
- 一对一映射关系:用户信息、配置参数、ID 对应数据;
- 需要根据名称 / 标识快速查找内容。
4. 集合 set{1,2,3}
特性
- 可变集合 set,还有不可变版本
frozenset - 无序:没有下标,不能通过
set[0]取值,每次打印顺序随机 - 自动去重:重复元素存入直接丢弃
s = {1,1,2,2,3} print(s) # {1,2,3} - 元素限制:只能存不可变类型(数字、字符串、元组),列表 / 字典不能放入集合
- 专属能力:集合运算(交集、并集、差集)
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}
适用场景
- 快速对列表去重;
- 判断两个数据集重合、对比差异。
三、高频易混考点
- 可变 vs 不可变核心区分
- 可变:list /dict/set → 内存原地修改,不生成新对象
- 不可变:tuple /str/int → 修改只能新建对象,原数据不变
- 哪些能做字典 key、集合元素? 只有不可变类型:int、float、str、tuple; list、dict、set 可变,禁止作为 key / 集合成员。
- 有序 vs 无序
- 有序:list、tuple、dict (3.7+),支持下标 / 按插入顺序遍历
- 无序:set,无下标,不记录插入顺序
- 去重需求优先用集合
lst = list(set(原列表))一行完成去重(缺点:会打乱原有顺序)
四、极简一句话总结
- 列表:有序可改,通用数组;
- 元组:有序不可改,安全固定数据;
- 字典:键值映射,按键快速查找;
- 集合:无序自动去重,用于数据对比、去重。
# 字典从 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)
# 随机种子开启后,每次打印顺序完全不一样所以"有序"是指:遍历时,元素出现的顺序和当初插入的顺序一致。
到此这篇关于Python 列表、元组、字典、集合 完整区别对比的文章就介绍到这了,更多相关Python 列表、元组、字典、集合内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
相关文章
Python datetime和unix时间戳之间相互转换的讲解
今天小编就为大家分享一篇关于Python datetime和unix时间戳之间相互转换的讲解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧2019-04-04


最新评论