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
相关推荐
青 春 记 忆27 分钟前
Dify Docker Compose 通用无损升级指南:从备份、双版本预演到切换与回滚
运维·人工智能·python·docker·容器
GlueNa2SiO328 分钟前
03-Flask模板引擎Jinja2详解
笔记·python·flask
临沂GEO3 小时前
GEO搜索优化科普|正规地理位置流量运营入门指南
大数据·人工智能·python·流量运营
大模型码小白3 小时前
Spring AI Tool 实现自然语言操作 MySQL 数据库详解
服务器·开发语言·数据库·人工智能·python·mysql·spring
荷蒲4 小时前
【小白量化Qbuddy】利用AI学习中文Python
人工智能·python·学习
不灭的黄金瞳1236 小时前
C语言手写顺序表
c语言·开发语言·数据结构
数据狐(Datafox)6 小时前
京东商品列表API技术解析与落地应用(含标准 JSON 示例)
java·大数据·前端·人工智能·python·数据分析·json
量化吞吐机6 小时前
2026年下半年手工交易规则走向量化表达,产品该先接住哪一步
人工智能·python
qeen876 小时前
【数据结构】哈希表的C++实现与封装
数据结构·c++·散列表·哈希表
重生之后端学习6 小时前
239. 滑动窗口最大值[困难]✅
java·数据结构·算法·leetcode·职场和发展