Python数据结构知识汇总(str、list、tuple、dict、set)

发布时间:2026/7/22 4:40:56
Python数据结构知识汇总(str、list、tuple、dict、set) 文章目录前言1. 字符串str—— 不可变的文本序列1.1 创建与定义1.2 查找与统计找得到 vs 找不到1.3 大小写与对齐格式化必备1.4 切割、拼接与替换核心处理1.5 剔除空白处理用户输入2. 列表list—— 最常用的“万能口袋”2.1 增添加元素2.2 删移除元素2.3 改与查2.4 列表推导式Pythonic写法3. 元组tuple—— 不可变的“只读列表”3.1 定义陷阱逗号是关键3.2 只能查不能改3.3 打包与解包实用技巧4. 字典dict—— 无敌的“键值对”查找表4.1 增与改4.2 删优雅地删除4.3 查安全获取 vs 直接取4.4 遍历三种姿势4.5 实战统计字符出现次数5. 集合set—— 去重与数学运算利器5.1 创建与去重5.2 增删元素5.3 集合运算交集、并集、差集总结前言在python中数据结构是处理数据的基石。 掌握常用的数据结构能让你更加高效的组织和管理数据。我将对python中的五种核心数据结构——字符串str列表list元组tuple字典dict和集合set进行系统性的总结包括定义创建常用操作遍历及注意事项并辅以代码示例适合初学者复习巩固。1. 字符串str—— 不可变的文本序列字符串是不可变的任何修改操作都会生成新字符串。1.1 创建与定义s1hellos2worlds3str(123)# 1231.2 查找与统计找得到 vs 找不到find / rfind找不到返回 -1推荐安全index / rindex找不到直接报错 ValueErrorcount统计子串出现次数texthello worldprint(text.find(l))# 2print(text.find(z))# -1不报错print(text.count(l))# 31.3 大小写与对齐格式化必备print(heLlo.lower())# helloprint(heLlo.upper())# HELLOprint(hello world.title())# Hello Worldprint(hello.center(10,*))# **hello***print(42.zfill(5))# 00042右对齐补零1.4 切割、拼接与替换核心处理# 切分wordsapple,banana,orange.split(,)# [apple, banana, orange]# 拼接new_str-.join([2026,07,21])# 2026-07-21# 替换msghello old.replace(old,new)# hello new1.5 剔除空白处理用户输入user_input admin print(user_input.strip())# adminprint(test.strip())# test2. 列表list—— 最常用的“万能口袋”列表是可变、有序的可以放任意类型。2.1 增添加元素nums[1,2]nums.append(3)# [1, 2, 3] 追加末尾nums.insert(0,0)# [0, 1, 2, 3] 指定位置插入nums.extend([4,5])# [0, 1, 2, 3, 4, 5] 扩展合并2.2 删移除元素nums[1,2,3,4]lastnums.pop()# 弹出末尾 4nums变为[1,2,3]firstnums.pop(0)# 弹出指定索引 1nums变为[2,3]nums.remove(2)# 删除值为2的元素不存在报错# nums.clear() # 一键清空 []2.3 改与查datas[5,2,9,1]datas.sort()# 升序 [1,2,5,9]datas.reverse()# 反转 [9,5,2,1]print(datas.index(5))# 查找5的索引 - 1print(datas.count(2))# 统计2的个数 - 12.4 列表推导式Pythonic写法# 快速生成平方数squares[x**2forxinrange(5)]# [0, 1, 4, 9, 16]3. 元组tuple—— 不可变的“只读列表”元组一创建就不能修改没有增删改方法常用于固定数据或函数返回多个值。3.1 定义陷阱逗号是关键t1()# 空元组t2(1,)# 注意必须有逗号否则就是intt3(1,2,3)t4tuple([1,2,3])# 类型转换3.2 只能查不能改t(10,20,30,20)print(t.count(20))# 2print(t.index(30))# 2if10int:print(存在)3.3 打包与解包实用技巧# 函数返回多个值本质是返回元组defget_user():return马云,50name,ageget_user()# 解包赋值print(name)# 马云4. 字典dict—— 无敌的“键值对”查找表字典通过键Key快速取值键必须是不可变类型如字符串、数字、元组。4.1 增与改user{id:1,name:张三}user[age]18# 新增键值对user[name]李四# 修改已有键user.update({city:郑州,age:20})# 批量更新4.2 删优雅地删除# pop删除并返回值不存在可设置默认值防报错ageuser.pop(age,None)# popitem删除最后插入的键值对Python 3.7 有序last_itemuser.popitem()# del / cleardeluser[id]# 删除指定键user.clear()# 清空 {}4.3 查安全获取 vs 直接取直接取 d[key]键不存在会报错 KeyErrorget(key, default)不存在返回 None 或自定义默认值强烈推荐user{name:王五}print(user.get(name))# 王五print(user.get(gender,未知))# 未知不报错4.4 遍历三种姿势forkinuser.keys():# 遍历键print(k)forvinuser.values():# 遍历值print(v)fork,vinuser.items():# 同时遍历键值print(k,v)4.5 实战统计字符出现次数shellocount_dict{}forcins:count_dict[c]count_dict.get(c,0)1print(count_dict)# {h:1, e:1, l:2, o:1}5. 集合set—— 去重与数学运算利器集合无序、元素唯一且元素必须是不可变类型不能放列表、字典。5.1 创建与去重# 空集合只能用 set(){} 是空字典sset()s2{1,2,3}# 秒级去重nums[1,1,2,3,3,4]uniquelist(set(nums))# [1, 2, 3, 4]顺序可能乱5.2 增删元素s{1,2,3}s.add(4)# {1,2,3,4}s.discard(5)# 删除5不存在也不报错推荐# s.remove(5) # 删除5不存在会报错rs.pop()# 随机删除并弹出因为无序5.3 集合运算交集、并集、差集A{1,2,3,4}B{3,4,5,6}# 交集 (共有的)print(AB)# {3, 4}print(A.intersection(B))# {3, 4}# 并集 (合在一起)print(A|B)# {1,2,3,4,5,6}print(A.union(B))# {1,2,3,4,5,6}# 差集 (A有B没有的)print(A-B)# {1, 2}print(A.difference(B))# {1, 2}# 对称差集 (不同时属于两者的)print(A^B)# {1, 2, 5, 6}总结字符串是不可变的文本序列有序可重复所有修改都会生成新串列表是可变的有序容器支持增删改查和索引是最通用的动态数组元组是不可变的“只读列表”有序可重复常用于固定数据或函数多返回值字典是可变的无序3.7 有序键值映射键必须唯一且不可变通过哈希表实现快速查找适合关联存储集合是可变的无序元素集元素唯一且不可变专为去重和交集、并集、差集等数学运算而生。牢记三点空集合用 set()空字典用 {}单元素元组要加逗号 (1,) —— 选对容器代码就成功了一半。