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 集合

×

×

数据去重、集合比对


七、新手高频总结

  1. 需要改数据用 list/dict/set,不需要改用 str/tuple

  2. 需要有序遍历用序列(str/list/tuple)

  3. 需要去重直接转 set

  4. 需要映射关系、快速查找用 dict

  5. 固定数据、防止误修改优先用 tuple

结尾寄语:数据结构是Python的内功,熟练掌握五种基础结构的特性与用法,能解决80%的基础编程问题,为后续算法、框架、数据分析学习打好基础!

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐