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. 必背坑点
- list 赋值是引用传递,修改会联动原数据 → 用 lst.copy()
- tuple 嵌套 list 时,内部 list 可修改
- dict key 必须是不可变类型(str/int/tuple),不能用 list/set
- set 自动去重,无序,不能索引
- 空集合必须用 set(),{} 是空字典
总结
- list:日常有序可变数据首选
- tuple:不可变、安全、高性能
- str:文本专用,不可变
- dict:键值对,查找最快
- set:去重 + 集合运算神器
- 按场景选择:有序→list/tuple;映射→dict;去重→set