前言在 Python 编程中列表list、字典dict、元组tuple、集合set是最核心、最常用的四大内置数据结构是所有 Python 开发者必须熟练掌握的基础核心能力。它们覆盖了日常开发中有序存储、键值映射、不可变数据、去重运算等几乎所有场景。很多初学者只会基础的增删改查却不知道这些数据结构藏着大量高效、简洁、高性能的实战技巧。本文将用超详细讲解 大量可运行代码从基础用法、高级技巧、性能优化、实战场景、避坑指南五个维度全面拆解四大数据结构适合所有 Python 学习者直接学习、复制、实战。本文基于 Python 3.8 环境所有代码均可直接运行。一、列表List最常用的有序可变序列列表是 Python 中使用频率最高的数据结构特点有序、可变、允许重复元素、支持任意数据类型。1.1 列表基础创建与操作python运行# 1. 创建列表 empty_list [] # 空列表 num_list [1, 2, 3, 4, 5] # 数字列表 mix_list [1, abc, True, [1,2]] # 混合类型列表 list_by_compre [i for i in range(5)] # 推导式创建 # 2. 基础访问索引、切片 print(num_list[0]) # 1正索引 print(num_list[-1]) # 5负索引 print(num_list[1:4]) # [2,3,4]切片 print(num_list[::-1]) # [5,4,3,2,1]反转 # 3. 增删改查 num_list.append(6) # 末尾添加 num_list.insert(0, 0) # 指定位置插入 num_list.extend([7,8]) # 批量添加 num_list.remove(3) # 删除元素 del num_list[0] # 删除索引 last num_list.pop() # 弹出末尾元素1.2 列表推导式高效生成列表核心技巧python运行# 基础推导式 square [x**2 for x in range(10)] # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81] # 带条件筛选 even [x for x in range(10) if x % 2 0] # [0,2,4,6,8] # 多重循环 matrix [[i,j] for i in range(2) for j in range(2)] # [[0,0],[0,1],[1,0],[1,1]]1.3 列表高级实战技巧技巧 1快速去重保持顺序python运行lst [1,2,2,3,3,3] new_lst list(dict.fromkeys(lst)) # [1,2,3]技巧 2批量修改元素python运行lst [1,2,3,4] lst[:] [x*2 for x in lst] # [2,4,6,8]技巧 3解压列表python运行a, *mid, b [1,2,3,4,5] print(a) # 1 print(mid) # [2,3,4] print(b) # 5技巧 4统计频次python运行from collections import Counter lst [a,a,b,c] print(Counter(lst)) # Counter({a:2, b:1, c:1})技巧 5扁平化嵌套列表python运行nested [[1,2],[3,4],[5,6]] flat [i for item in nested for i in item] # [1,2,3,4,5,6]1.4 列表常用内置方法python运行lst [3,1,4,1,5] lst.sort() # 排序[1,1,3,4,5] lst.sort(reverseTrue) # 倒序 lst.reverse() # 反转 print(lst.index(3)) # 查找索引 print(lst.count(1)) # 统计次数1.5 列表实战场景数据存储、日志记录、批量处理读取文件行、接口返回数据数据分析、排序筛选、统计二、字典Dict键值对映射神器字典是 Python 中最核心的映射型数据结构特点键唯一、无序3.7 有序、可变、查询极快。2.1 字典基础操作python运行# 创建字典 empty_dict {} user {name:Tom, age:20, gender:male} # 访问 print(user[name]) print(user.get(age, 0)) # 安全获取无则返回默认值 # 增删改 user[height] 180 # 添加 user[age] 21 # 修改 del user[gender] # 删除 age user.pop(age) # 弹出键值对2.2 字典推导式python运行# 快速生成字典 dic {x:x**2 for x in range(5)} # {0:0,1:1,2:4,3:9,4:16} # 列表转字典 keys [a,b,c] values [1,2,3] dic dict(zip(keys, values)) # {a:1,b:2,c:3}2.3 字典高级实战技巧技巧 1安全访问避免 KeyErrorpython运行# 推荐写法 print(user.get(score, 0)) # 不推荐 # print(user[score]) # 报错技巧 2合并字典python运行a {x:1} b {y:2} # Python3.5 c {**a, **b} # Python3.9 c a | b # {x:1, y:2}技巧 3快速获取键、值、键值对python运行print(user.keys()) print(user.values()) print(user.items()) # 最常用技巧 4遍历字典最优雅写法python运行for k, v in user.items(): print(k, v)技巧 5字典默认值defaultdictpython运行from collections import defaultdict d defaultdict(int) d[a] 1 # 不会报错默认 0技巧 6按值排序字典python运行dic {a:3, b:1, c:2} sorted_dic dict(sorted(dic.items(), keylambda x:x[1])) # {b:1,c:2,a:3}技巧 7字典解包python运行def info(name, age): print(name, age) user {name:Tom, age:20} info(**user)2.4 字典实战场景配置文件、接口参数缓存、计数、映射关系JSON 数据处理最常用三、元组Tuple不可变的安全容器元组与列表非常相似但不可变不能增删改特点安全、高效、可哈希、可作为字典键。3.1 元组基础用法python运行# 创建元组 t (1,2,3) single (1,) # 单元素必须加逗号 no_bracket 1,2,3 # 访问同列表 print(t[0]) print(t[1:3]) # 不可修改报错 # t[0] 1003.2 元组核心技巧技巧 1变量交换一行实现python运行a, b 1, 2 a, b b, a技巧 2函数多返回值python运行def get_pos(): return 10, 20 x, y get_pos()技巧 3元组解包python运行a, *mid, b (1,2,3,4,5) print(mid) # [2,3,4]技巧 4元组转列表 / 列表转元组python运行lst list(t) t tuple(lst)技巧 5作为字典键列表不行python运行dic {(1,2): 坐标} # 合法 # dic {[1,2]:坐标} # 报错3.3 元组优势比列表更快、更省内存不可变数据更安全可哈希可用于字典和集合四、集合Set去重与数学运算神器集合最大特点无序、无重复、支持数学交集 / 并集 / 差集运算。4.1 集合基础操作python运行# 创建集合 s {1,2,2,3} # 自动去重 {1,2,3} s2 set([1,2,3,3]) # 添加删除 s.add(4) s.update([5,6]) s.remove(2) s.discard(9) # 无则不报错 s.pop() # 随机删除4.2 集合实战技巧技巧 1极速去重最快方法python运行lst [1,2,2,3,3,3] new_lst list(set(lst))技巧 2交集、并集、差集python运行a {1,2,3} b {3,4,5} print(a b) # 交集 {3} print(a | b) # 并集 {1,2,3,4,5} print(a - b) # 差集 {1,2} print(a ^ b) # 对称差集 {1,2,4,5}技巧 3判断子集、超集python运行x {1,2} y {1,2,3} print(x.issubset(y)) # True print(y.issuperset(x)) # True技巧 4快速判断两列表是否有交集python运行if set(lst1) set(lst2): print(有交集)技巧 5集合推导式python运行s {x for x in range(10) if x%20}4.3 集合实战场景数据去重共同好友、共同兴趣筛选权限判断、黑名单校验快速查找存在性五、四大数据结构对比与选择指南5.1 核心对比表表格结构有序可变重复查找适用场景列表是是允许慢有序列表、批量数据字典是 (3.7)是键唯一极快键值映射、配置元组是否允许慢固定数据、安全集合否是不允许极快去重、数学运算5.2 如何选择需要有序、可修改→ 列表需要键值对、快速查询→ 字典需要不可变、安全、固定值→ 元组需要去重、交集、并集→ 集合六、综合实战案例四大结构联用案例 1学生成绩管理系统python运行# 列表存储学生 students [ {name: Tom, score: 88}, {name: Jerry, score: 95}, {name: Tom, score: 70} ] # 去重姓名 names {s[name] for s in students} # 统计最高分 max_score max(students, keylambda x:x[score]) # 按分数排序 sorted_stu sorted(students, keylambda x:-x[score])案例 2批量数据清洗python运行data [1,2,2,3,4,4,5,None] # 去重 过滤空值 clean list(set(filter(None, data)))案例 3JSON 数据解析字典 列表python运行json_data { code:200, data: [ {id:1, name:a}, {id:2, name:b} ] } names [item[name] for item in json_data[data]]七、高频面试题列表和元组区别可变 vs 不可变性能不同用途不同。字典为什么查询快哈希表存储O (1) 时间复杂度。如何快速去重list(set(lst))什么数据结构可作为字典键可哈希对象字符串、数字、元组。集合的核心用途去重、数学运算、快速判断存在性。总结本文完整覆盖 Python列表、字典、元组、集合四大核心数据结构列表有序可变最常用适合批量数据字典键值映射查询最快适合配置与 JSON元组不可变安全高效适合固定数据集合去重神器数学运算快速判断掌握这些实战技巧你的代码会更简洁、高效、优雅能轻松应对日常开发、数据分析、自动化、爬虫、面试等所有场景。