Python3 数据结构

1. 数据结构总览

Python 3 内置6 大核心数据结构,分可变、不可变、有序、无序四类:

  • 不可变(不能修改值):字符串 (str)、元组 (tuple)、数值 (int/float)
  • 可变(可增删改):列表 (list)、字典 (dict)、集合 (set)
  • 有序(可按索引取值):str、list、tuple
  • 无序(无索引):dict、set

2. 列表(list)→ 最常用、有序、可变

定义

\[\] 包裹,元素可任意类型,支持增删改查,有序可索引。

基础语法

python 复制代码
# 创建
lst = [1, "abc", True, [2,3]]
lst = list()  # 空列表

# 查(索引/切片)
lst[0]    # 第1个元素
lst[-1]   # 最后1个
lst[1:3]  # 切片 [起始:结束:步长]

# 增
lst.append(x)    # 末尾加1个
lst.insert(i,x)  # 指定索引插入
lst.extend(iter) # 批量添加(合并)

# 改
lst[0] = 100

# 删
lst.pop(i)       # 按索引删,默认删最后
lst.remove(x)    # 按值删(删第一个)
lst.clear()      # 清空
del lst[i]       # 按索引删除

# 常用方法
lst.index(x)     # 找元素索引
lst.count(x)     # 统计次数
lst.sort()       # 原地升序
lst.reverse()    # 原地反转
len(lst)         # 长度

特点

有序、可重复、可嵌套、可修改

适用:存储有序、可变更的数据集合

3. 元组(tuple)→ 有序、不可变

定义

() 包裹,一旦创建不可修改,安全、性能比 list 高。

基础语法

python 复制代码
# 创建
t = (1, 2, 3)
t = (1,)  # 单元素必须加逗号!
t = tuple()

# 查(同列表)
t[0]
t[1:3]

# 不可操作:不能增/删/改
# 允许:查询、计数、索引
t.index(x)
t.count(x)
len(t)

特点

不可变、有序、可重复

适用:固定配置、函数返回值、安全数据

4. 字符串(str)→ 有序、不可变

定义

''/""/"""""" 包裹,文本序列,不可修改。

基础语法

python 复制代码
# 创建
s = "hello"

# 查
s[0]
s[-1]
s[1:3]

# 常用方法
s.upper()        # 转大写
s.lower()        # 转小写
s.strip()        # 去首尾空格
s.split(',')     # 按分隔符切分 → list
s.join(list)     # 用字符串拼接列表
s.replace('a','b')# 替换
s.find('x')      # 查找索引,无则-1
s.isdigit()      # 是否纯数字
len(s)

特点

不可变、有序、可索引、可切片

所有修改操作都会生成新字符串

5. 字典(dict)→ 键值对、无序 (3.7 + 有序)、可变

定义

{key: value} 存储映射关系,key 必须不可变 / 唯一,value 任意。

基础语法

python 复制代码
# 创建
d = {"name": "Tom", "age": 18}
d = dict(name="Tom", age=18)

# 查
d["name"]        # 键不存在报错
d.get("name")    # 键不存在返回 None,不报错

# 增/改
d["age"] = 20    # 有则改,无则增
d.update(dict2)  # 批量更新

# 删
d.pop("key")     # 按key删
d.popitem()      # 删最后一对
d.clear()
del d["key"]

# 遍历
d.keys()    # 所有键
d.values()  # 所有值
d.items()   # 所有(key,value)

特点

key 唯一、不可变

查找极快(O (1))

适用:存储结构化数据(配置、用户信息、接口返回)

6. 集合(set)→ 无序、无索引、无重复

定义

{} 或 set(),自动去重,支持数学集合运算。

基础语法

python 复制代码
# 创建
s = {1,2,2,3}  # 自动去重 → {1,2,3}
s = set()      # 空集合(不能用 {})

# 增
s.add(x)
s.update(iter) # 批量添加

# 删
s.remove(x)    # 不存在报错
s.discard(x)   # 不存在不报错
s.pop()        # 随机删
s.clear()

# 集合运算
a & b  # 交集
a | b  # 并集
a - b  # 差集
a ^ b  # 对称差集

特点

无重复、无序、无索引

查找速度极快(O (1))

适用:去重、判断存在、交集 / 并集 / 差集

7. 6 大结构对比速查表

结构 符号 可变 有序 重复 查找 核心用途
list \[\] 有序列表
tuple () 固定数据
str "" 文本
dict {} ✅✅(3.7+) key❌ 极快 键值映射
set {} 极快 去重/集合

8. 类型转换(高频)

python 复制代码
list(s)    # 转列表
tuple(lst) # 转元组
set(lst)   # 转集合(去重)
dict(items)# 转字典
str(x)     # 转字符串

9. 通用操作

长度:len(x)

遍历:for i in x:

判断存在:x in 变量

切片:a🅱️c(list/tuple/str)

10. 必背坑点

  1. list 赋值是引用传递,修改会联动原数据 → 用 lst.copy()
  2. tuple 嵌套 list 时,内部 list 可修改
  3. dict key 必须是不可变类型(str/int/tuple),不能用 list/set
  4. set 自动去重,无序,不能索引
  5. 空集合必须用 set(),{} 是空字典

总结

  1. list:日常有序可变数据首选
  2. tuple:不可变、安全、高性能
  3. str:文本专用,不可变
  4. dict:键值对,查找最快
  5. set:去重 + 集合运算神器
  6. 按场景选择:有序→list/tuple;映射→dict;去重→set
相关推荐
HappyAcmen4 分钟前
5.通义向量模型调用
python
python-码博士41 分钟前
PyTorch 从零实现 Flow Matching:训练、采样、画图一条龙
人工智能·pytorch·python
王小王-1231 小时前
基于Python的车联网数据聚合与可视化分析平台设计与实现
python·车联网·新能源汽车·车联网聚合分析
dtq04241 小时前
C语言刷题数组5,6(求平均值,求最大值)
c语言·数据结构·算法
叫我:松哥2 小时前
基于Flask框架的校园二手书籍交易平台,注重校园场景的特殊需求,通过学号认证保障用户真实性
后端·python·sqlite·flask·bootstrap
namexingyun2 小时前
开源前端生态如何成为 AI UI 生成的“燃料“:shadcn/ui、Tailwind CSS、Storybook 技术价值全解剖
java·前端·人工智能·python·ui·开源·ai编程
通信仿真爱好者2 小时前
第【17】期--考虑硬件损伤和不完美CSI的RIS-MISO系统的深度强化学习联合优化-python完整代码+参考文献
python·深度强化学习·ris
装不满的克莱因瓶2 小时前
自然语言处理常见任务——从文本理解到生成式AI的完整任务体系
人工智能·pytorch·python·深度学习·ai·自然语言处理
ptc学习者2 小时前
python 中描述符@property property 大概的样子
开发语言·python
zmzb01032 小时前
Python课后习题训练记录Day129
开发语言·python