Python五大核心数据结构最全汇总(str/list/tuple/dict/set)新手必收藏
Python 内置了五种最常用的核心数据结构:字符串(str)、列表(list)、元组(tuple)、字典(dict)、集合(set)。这五种数据结构是Python编程的基石,无论是日常开发、数据分析、爬虫还是算法刷题,都离不开它们。
很多新手编程报错、代码冗余、效率低下,本质都是对数据结构特性不熟悉。本文将从零梳理语法、核心特性、常用操作、实战场景、避坑要点,搭配可直接运行的代码示例,一篇吃透Python基础数据结构!
关键字前置总结:
有序序列:str、list、tuple(支持索引、切片)
无序序列:dict、set(无索引,不支持切片)
可变数据:list、dict、set(可原地修改元素)
不可变数据:str、tuple(无法修改原数据,修改即新建)
可重复:str、list、tuple
不可重复:dict(键唯一)、set(元素唯一)
一、字符串 str
1. 核心定义
字符串是有序、不可变的字符序列,是Python最基础的文本数据类型,所有单引号、双引号、三引号包裹的内容都是字符串。
2. 创建方式
# 单行字符串
s1 = 'Python'
s2 = "数据结构"
# 多行字符串
s3 = """
hello
world
"""
# 原始字符串(忽略转义字符,常用于路径、正则)
s4 = r"E:\jhx\level1"
3. 核心特性
有序:支持下标索引、切片取值
不可变:无法修改单个字符,修改操作会生成新字符串
元素:仅存储字符,可重复、可包含数字、文字、符号
4. 高频常用操作
s = "Hello Python"
# 1. 索引切片
print(s[0]) # H 正向索引
print(s[-1]) # n 反向索引
print(s[0:5]) # Hello 切片
# 2. 常用方法
print(s.upper()) # 全大写
print(s.lower()) # 全小写
print(s.strip())# 去除首尾空格/换行
print(s.split(" ")) # 按空格分割成列表
# 3. 拼接与长度
new_s = s + "!!!"
print(len(s))
5. 适用场景 & 避坑
场景:文本处理、日志解析、文件路径存储、用户输入接收、字符串格式化
避坑:不要尝试修改字符串单个字符 s[0] = "A" 会直接报错!
二、列表 list
1. 核心定义
列表是有序、可变、可重复的容器,是Python最万能的数据结构,用中括号 [] 定义,可存储任意数据类型(数字、字符串、列表、字典等)。
2. 创建方式
# 空列表
list1 = []
list2 = list()
# 普通列表
num_list = [1, 2, 3, 4]
mix_list = [10, "python", True, [1,2]]
3. 核心特性
有序:元素按插入顺序排列,支持索引、切片
可变:可增删改查原地修改元素
可重复:允许存在相同元素
包容性强:支持任意数据类型嵌套
4. 高频常用操作
lst = [1, 2, 3]
# 增
lst.append(4) # 末尾追加
lst.insert(0, 0) # 指定位置插入
# 删
lst.pop() # 删除末尾元素,返回删除值
lst.remove(2) # 删除指定元素
# 改
lst[0] = 100 # 通过索引修改
# 查
print(lst[1])
print(len(lst))
5. 适用场景 & 避坑
场景:存储有序可变数据、批量数据存储、循环遍历、临时数据缓存
避坑:列表是可变对象,直接赋值会浅拷贝,修改一个变量会影响另一个;不适合做字典的键。
三、元组 tuple
1. 核心定义
元组是有序、不可变、可重复的容器,用小括号 () 定义,特性和列表高度相似,唯一区别是不可修改。
2. 创建方式
# 空元组
t1 = ()
t2 = tuple()
# 普通元组
t3 = (1, 2, 3)
# 单个元素元组【必须加逗号】
t4 = (10,)
# 序列解包常用
a, b, c = (1, 2, 3)
3. 核心特性
有序:支持索引、切片、遍历
不可变:无法增删改元素,安全性高
可重复、可嵌套任意数据类型
可作为字典的键(列表不可以)
4. 高频常用操作
t = (1, 2, 3, 2)
# 查
print(t[0])
print(t.count(2)) # 统计元素个数
print(t.index(3)) # 查询元素下标
# 拼接
new_t = t + (4,5)
5. 适用场景 & 避坑
场景:存储固定不变的数据、函数多返回值、字典键、保护数据不被误修改
避坑:单个元素元组必须加逗号 (10,),否则会被识别为普通括号;元组内嵌套列表,列表元素可以修改。
四、字典 dict
1. 核心定义
字典是无序(3.7+插入有序)、可变、键唯一的键值对容器,用大括号 {} 定义,存储 key:value 映射关系,是Python查询效率最高的数据结构。
2. 创建方式
# 空字典
d1 = {}
d2 = dict()
# 普通字典
stu = {"name": "张三", "age": 18, "gender": "男"}
3. 核心特性
键唯一:重复键会覆盖旧值
键不可变:只能用str、int、tuple等不可变类型,不能用list/set
值任意:可存储所有数据类型
可变:支持增删改查
4. 高频常用操作
d = {"name": "李四", "age": 20}
# 增/改
d["gender"] = "女" # 新增键值对
d["age"] = 21 # 修改值
# 查
print(d.get("name")) # 推荐,无键不报错
# 删
d.pop("gender")
# 遍历
print(d.keys()) # 所有键
print(d.values()) # 所有值
print(d.items()) # 所有键值对
5. 适用场景 & 避坑
场景:存储关联数据、配置信息、接口数据、字典映射、高频查询场景
避坑:禁止用列表、集合作为字典键;直接取值 d["xxx"] 键不存在会报错,优先用 get()。
五、集合 set
1. 核心定义
集合是无序、可变、元素唯一的容器,用 {} 或 set() 定义,自动去重,支持数学集合运算。
2. 创建方式
# 空集合【只能用set()】
s1 = set()
# 普通集合
s2 = {1, 2, 3, 2, 1} # 自动去重,结果 {1,2,3}
# 可迭代对象转集合
s3 = set([1,2,2,3])
3. 核心特性
无序:无索引、不支持切片
元素唯一:自动去重,是集合最核心作用
元素不可变:集合内元素必须是不可变类型
可变:可增删元素
4. 高频常用操作
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 增删
a.add(5)
a.remove(1)
# 集合运算
print(a & b) # 交集 {3,4,5}
print(a | b) # 并集 {1,2,3,4,5,6}
print(a - b) # 差集 {2}
5. 适用场景 & 避坑
场景:数据去重、交集/并集/差集比对、成员快速判断
避坑:空集合不能用 {}(是空字典);集合无序,无法通过索引取值。
六、五大数据结构终极对比表
|
数据结构 |
有序 |
可变 |
可重复 |
核心用途 |
|---|---|---|---|---|
|
str 字符串 |
√ |
× |
√ |
文本处理、字符串操作 |
|
list 列表 |
√ |
√ |
√ |
通用有序可变数据存储 |
|
tuple 元组 |
√ |
× |
× |
固定数据、安全存储、字典键 |
|
dict 字典 |
3.7+有序 |
√ |
键唯一 |
键值对映射、快速查询 |
|
set 集合 |
× |
√ |
× |
数据去重、集合比对 |
七、新手高频总结
-
需要改数据用 list/dict/set,不需要改用 str/tuple
-
需要有序遍历用序列(str/list/tuple)
-
需要去重直接转 set
-
需要映射关系、快速查找用 dict
-
固定数据、防止误修改优先用 tuple
结尾寄语:数据结构是Python的内功,熟练掌握五种基础结构的特性与用法,能解决80%的基础编程问题,为后续算法、框架、数据分析学习打好基础!
更多推荐
所有评论(0)