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

相关推荐
圆弧YH2 小时前
Python→ Bookmark
开发语言·python
pele2 小时前
如何处理ORA-01152报错_恢复未完成导致的数据文件仍需介质恢复
jvm·数据库·python
xcbrand2 小时前
能源材料品牌策划公司哪家强
python·能源
l1t2 小时前
DeepSeek v4辅助编写调用Python包对用户数据做统计分析的页面
开发语言·javascript·python
qq_372154232 小时前
SQL如何避免隐式类型转换导致的慢查询_参数类型对齐与索引失效
jvm·数据库·python
qq_342295822 小时前
MySQL怎样在触发器中引用新旧数据行_NEW与OLD关键字详解
jvm·数据库·python
m0_746752302 小时前
如何配置Data Guard主备库目录结构不同_DB_FILE_NAME_CONVERT参数转换规则
jvm·数据库·python
weixin_424999362 小时前
CSS如何解决CSS冲突导致的BUG_使用CSS层叠层特性隔离样式
jvm·数据库·python
2301_816660212 小时前
将地址转换为可点击的 Google Maps 链接(支持动态生成)
jvm·数据库·python