Python 数据结构知识汇总
Python 数据结构知识汇总 前言Python 作为一门优雅且功能强大的编程语言其内置的数据结构是每个 Python 开发者必须掌握的基础知识。本文将系统性地介绍 Python 中五大核心数据结构字符串str、列表list、元组tuple、字典dict和集合set帮助读者建立完整的知识体系。一、字符串str1.1 什么是字符串字符串是 Python 中最常用的数据类型用于表示文本信息。可以使用单引号、双引号或三引号来定义。python# 字符串定义 str1 Hello World str2 Python str3 多行 字符串1.2 字符串的常用操作操作方法示例长度len()len(hello)→ 5索引[索引]hello[1]→ e切片[开始:结束:步长]hello[1:4]→ ell拼接Hello World→ HelloWorld重复*Hi * 3→ HiHiHi查找find()hello.find(e)→ 1替换replace()hello.replace(e, a)→ hallo分割split()a,b,c.split(,)→ [a,b,c]大写upper()hello.upper()→ HELLO小写lower()HELLO.lower()→ hello去除空格strip() hi .strip()→ hi判断字母数字isalnum()abc123.isalnum()→ True1.3 字符串的切片操作重点pythons Python学习 # 切片语法s[开始:结束:步长] print(s[0]) # P print(s[-1]) # 习 print(s[0:6]) # Python print(s[6:]) # 学习 print(s[::-1]) # 习学nohtyP反转字符串1.4 字符串格式化python# 三种常用格式化方式 # 1. % 格式化旧式 name 张三 age 18 print(姓名%s年龄%d % (name, age)) # 2. format() 方法 print(姓名{}年龄{}.format(name, age)) # 3. f-stringPython 3.6推荐 print(f姓名{name}年龄{age})二、列表list2.1 什么是列表列表是 Python 中最常用的可变容器类型可以存储任意类型的元素支持增删改查操作。python# 列表定义 list1 [] # 空列表 list2 [1, 2, 3] # 整数列表 list3 [a, b, c] # 字符串列表 list4 [1, hello, 3.14, True] # 混合类型2.2 列表的增删改查增加元素方法说明示例append()在末尾添加一个元素lst.append(4)insert()在指定位置插入lst.insert(0, 0)extend()合并另一个列表lst.extend([5,6])pythonlst [1, 2, 3] lst.append(4) # [1, 2, 3, 4] lst.insert(0, 0) # [0, 1, 2, 3, 4] lst.extend([5, 6]) # [0, 1, 2, 3, 4, 5, 6]删除元素方法说明示例pop()删除末尾元素可指定索引lst.pop()→ 返回删除的值remove()删除指定值的第一个匹配项lst.remove(2)del删除指定索引或切片del lst[0]或del lst[1:3]clear()清空列表lst.clear()pythonlst [1, 2, 3, 4, 5] lst.pop() # [1, 2, 3, 4] lst.pop(0) # [2, 3, 4] lst.remove(3) # [2, 4] del lst[0] # [4]修改元素pythonlst [1, 2, 3] lst[0] 100 # [100, 2, 3] lst[1:3] [200, 300] # [100, 200, 300]查询元素pythonlst [10, 20, 30, 20, 40] # 获取元素 print(lst[0]) # 10 print(lst[-1]) # 40 print(lst[1:4]) # [20, 30, 20] # 查找索引 print(lst.index(20)) # 1返回第一个匹配的索引 # 统计次数 print(lst.count(20)) # 2 # 判断是否存在 print(30 in lst) # True # 遍历 for item in lst: print(item) for i, item in enumerate(lst): print(f索引{i}: {item})2.3 列表推导式重点python# 生成 1-10 的平方列表 squares [i**2 for i in range(1, 11)] print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100] # 带条件的列表推导式 even [i for i in range(1, 21) if i % 2 0] print(even) # [2, 4, 6, 8, 10, 12, 14, 16, 18, 20] # 嵌套列表推导式 matrix [[1, 2, 3], [4, 5, 6], [7, 8, 9]] flatten [num for row in matrix for num in row] print(flatten) # [1, 2, 3, 4, 5, 6, 7, 8, 9]2.4 列表的常用函数函数说明示例len()获取长度len([1,2,3])→ 3max()获取最大值max([1,5,3])→ 5min()获取最小值min([1,5,3])→ 1sum()求和sum([1,2,3])→ 6sorted()排序返回新列表sorted([3,1,2])→ [1,2,3]reverse()反转列表lst.reverse()三、元组tuple3.1 什么是元组元组与列表类似但一旦创建不可修改不可变。使用小括号()定义。python# 元组定义 t1 () # 空元组 t2 (1, 2, 3) # 普通元组 t3 (1,) # 单元素元组注意逗号 t4 1, 2, 3 # 不加括号也可以3.2 元组的特点pythont (10, 20, 30, 40, 50) # ✅ 支持索引 print(t[0]) # 10 print(t[-1]) # 50 # ✅ 支持切片 print(t[1:4]) # (20, 30, 40) # ✅ 支持遍历 for item in t: print(item) # ✅ 支持成员判断 print(30 in t) # True # ❌ 不支持修改 t[0] 100 # TypeError: tuple object does not support item assignment3.3 元组的应用场景python# 1. 函数返回多个值 def get_student(): return 张三, 18, 男 name, age, sex get_student() print(name, age, sex) # 张三 18 男 # 2. 交换变量 a, b 10, 20 a, b b, a # 本质是元组解包 print(a, b) # 20 10 # 3. 作为字典的键列表不行 d {(1, 2): value} # ✅ 元组可以作为键 # d {[1, 2]: value} # ❌ 列表不可以作为键四、字典dict4.1 什么是字典字典是 Python 中唯一的键值对key-value映射类型通过键来访问值。键必须是不可变类型字符串、数字、元组值可以是任意类型。python# 字典定义 d1 {} # 空字典 d2 {name: 张三, age: 18} # 普通字典 d3 dict(name张三, age18) # 使用 dict() 函数4.2 字典的增删改查增加/修改pythond {name: 张三, age: 18} # 增加或修改 d[gender] 男 # 新增键值对 d[age] 19 # 修改已有键的值 # update() 合并字典 d.update({score: 90, grade: A}) print(d) # {name: 张三, age: 19, gender: 男, score: 90, grade: A}删除pythond {name: 张三, age: 18, gender: 男} # pop() 删除指定键并返回值 age d.pop(age) print(age) # 18 # popitem() 删除并返回最后一个键值对 item d.popitem() print(item) # (gender, 男) # del 删除指定键 del d[name] # clear() 清空 d.clear()查询pythond {name: 张三, age: 18, gender: 男} # 通过键取值键不存在会报错 print(d[name]) # 张三 # get() 取值键不存在返回 None 或默认值 print(d.get(name)) # 张三 print(d.get(score)) # None print(d.get(score, 0)) # 0 # 获取所有键 print(d.keys()) # dict_keys([name, age, gender]) # 获取所有值 print(d.values()) # dict_values([张三, 18, 男]) # 获取所有键值对 print(d.items()) # dict_items([(name, 张三), (age, 18), (gender, 男)]) # 遍历字典 for key in d: print(f{key}: {d[key]}) for key, value in d.items(): print(f{key}: {value})4.3 字典推导式python# 生成数字平方的字典 squares {i: i**2 for i in range(1, 6)} print(squares) # {1: 1, 2: 4, 3: 9, 4: 16, 5: 25} # 筛选条件 even_squares {i: i**2 for i in range(1, 11) if i % 2 0} print(even_squares) # {2: 4, 4: 16, 6: 36, 8: 64, 10: 100}4.4 字典的常用方法方法说明get(key, default)获取键的值不存在返回默认值setdefault(key, default)如果键存在返回其值否则插入键并设置默认值pop(key)删除键并返回其值keys()返回所有键的视图values()返回所有值的视图items()返回所有键值对的视图update(dict2)合并另一个字典五、集合set5.1 什么是集合集合是无序的、元素唯一的容器类型主要用于去重和集合运算交集、并集等。python# 集合定义 s1 set() # 空集合不能使用 {}那是空字典 s2 {1, 2, 3} # 普通集合 s3 set([1, 2, 2, 3, 3]) # [1, 2, 3]自动去重5.2 集合的操作添加元素pythons {1, 2, 3} # add() 添加单个元素 s.add(4) # {1, 2, 3, 4} s.add(2) # {1, 2, 3, 4}不会重复 # update() 添加多个元素 s.update([5, 6, 7]) # {1, 2, 3, 4, 5, 6, 7}删除元素pythons {1, 2, 3, 4, 5} # remove() 删除指定元素不存在报错 s.remove(3) # {1, 2, 4, 5} # discard() 删除指定元素不存在不报错 s.discard(10) # 不会报错 # pop() 随机删除并返回一个元素 item s.pop() # clear() 清空 s.clear()5.3 集合运算pythonA {1, 2, 3, 4, 5} B {4, 5, 6, 7, 8} # 交集 print(A B) # {4, 5} print(A.intersection(B)) # 并集 print(A | B) # {1, 2, 3, 4, 5, 6, 7, 8} print(A.union(B)) # 差集A 有 B 没有 print(A - B) # {1, 2, 3} print(A.difference(B)) # 对称差集不同时存在的 print(A ^ B) # {1, 2, 3, 6, 7, 8} print(A.symmetric_difference(B)) # 判断子集 print({1, 2} A) # True{1,2} 是 A 的子集 # 判断超集 print(A {1, 2}) # TrueA 是 {1,2} 的超集5.4 集合的去重应用python# 去重 lst [1, 2, 2, 3, 3, 3, 4, 4, 4, 4] unique list(set(lst)) print(unique) # [1, 2, 3, 4] # 统计字符串中的不同字符 text hello world chars set(text) print(chars) # {h, e, l, o, , w, r, d}六、数据结构对比总结6.1 快速对比表特性列表 (list)元组 (tuple)字典 (dict)集合 (set)符号[](){}{}可变性✅ 可变❌ 不可变✅ 可变✅ 可变有序性✅ 有序✅ 有序✅ 有序Python 3.7❌ 无序元素唯一性❌ 可重复❌ 可重复✅ 键唯一✅ 元素唯一索引方式整数索引整数索引键key不支持索引适用场景存储有序数据存储不可变数据键值映射去重、集合运算6.2 使用场景速查python# 列表需要频繁修改的有序数据 students [张三, 李四, 王五] # 元组不需要修改的数据或函数返回多个值 coordinates (10, 20) # 字典需要键值映射的数据 user {name: 张三, age: 18} # 集合去重或集合运算 unique_numbers {1, 2, 3, 4, 5}七、常见面试题7.1 列表和元组的区别区别列表元组可变性可变不可变性能较慢需要额外分配内存较快固定大小使用场景需要修改的数据不需要修改的数据7.2 字典和集合的区别区别字典集合元素类型键值对单个元素键唯一性键唯一元素唯一使用场景映射关系去重、集合运算7.3 可变对象 vs 不可变对象python# 不可变对象修改会创建新对象 s hello s s world # 创建了新字符串 # 可变对象修改不会创建新对象 lst [1, 2, 3] lst.append(4) # 在原列表上修改八、总结本文系统介绍了 Python 中五大核心数据结构字符串str文本处理不可变列表list有序可变容器最常用的序列类型元组tuple有序不可变容器安全性高字典dict键值映射高效查找集合set无序不重复元素去重与集合运算掌握这些数据结构是学好 Python 的基础建议在实际编码中多加练习理解每种数据结构的特性和适用场景。本文首发于 CSDN欢迎点赞、收藏、转发 如有问题欢迎在评论区留言交流。

相关新闻

10分钟搞定Windows Dlib安装:Python 3.7-3.14预编译包完全指南

10分钟搞定Windows Dlib安装:Python 3.7-3.14预编译包完全指南

10分钟搞定Windows Dlib安装:Python 3.7-3.14预编译包完全指南 【免费下载链接】Dlib_Windows_Python3.x Dlib compiled binaries (.whl) for Python 3.7-3.14 and Windows x64 项目地址: https://gitcode.com/gh_mirrors/dl/Dlib_Windows_Python3.x 还在为W…

2026/7/30 0:47:48 阅读更多 →
暗黑破坏神2终极优化指南:3步让经典游戏在现代PC上焕然一新

暗黑破坏神2终极优化指南:3步让经典游戏在现代PC上焕然一新

暗黑破坏神2终极优化指南:3步让经典游戏在现代PC上焕然一新 【免费下载链接】d2dx D2DX is a complete solution to make Diablo II run well on modern PCs, with high fps and better resolutions. 项目地址: https://gitcode.com/gh_mirrors/d2/d2dx 你是…

2026/7/30 17:06:20 阅读更多 →
跨平台资源下载解决方案:如何用res-downloader一站式解决全网视频下载难题

跨平台资源下载解决方案:如何用res-downloader一站式解决全网视频下载难题

跨平台资源下载解决方案:如何用res-downloader一站式解决全网视频下载难题 【免费下载链接】res-downloader 视频号、小程序、抖音、快手、小红书、直播流、m3u8、酷狗、QQ音乐等常见网络资源下载! 项目地址: https://gitcode.com/GitHub_Trending/re/res-downloa…

2026/7/29 21:25:43 阅读更多 →

最新新闻

Python NaN问题全解析:从根源排查到深度学习实战解决方案

Python NaN问题全解析:从根源排查到深度学习实战解决方案

1. 项目概述:从“嘿嘿嘿”到“稳了稳了”的NaN排查之旅看到“已解决 python出现nan的正确解决方法,亲测有效嘿嘿嘿”这个标题,我仿佛看到了屏幕那头一位同行在经历了漫长的调试、反复的试错后,终于揪出那个导致程序输出一堆“nan”…

2026/7/30 17:08:21 阅读更多 →
Linux 磁盘管理——df、du、fdisk、LVM 实战

Linux 磁盘管理——df、du、fdisk、LVM 实战

磁盘空间满是最常见的线上故障之一。这篇讲怎么查空间、怎么扩容量。 一、查看磁盘空间 df -h # 查看各分区使用情况 du -sh /var/log/ # 查看目录总大小 du -sh * | sort -rh | head -10 # 当前目录下前10大文件二、查找大文件 find / -type f -siz…

2026/7/30 17:08:21 阅读更多 →
Linux 文本处理三剑客——grep、awk、sed 进阶用法

Linux 文本处理三剑客——grep、awk、sed 进阶用法

日志分析是运维的基础技能。grep 过滤、awk 处理列、sed 编辑行。 一、grep grep -r "ERROR" /var/log/ # 递归搜索 grep -E "ERROR|WARN" app.log # 多条件 grep -A5 -B5 "NullPointer" app.log # 上下文各5行二、awk awk…

2026/7/30 17:08:21 阅读更多 →
MySQL 数据库设计三范式与反范式优化

MySQL 数据库设计三范式与反范式优化

数据库设计要遵循三范式,但实际开发中为了性能也会适当反范式。 一、三范式 -- 第一范式(1NF):列不可再分 -- ❌ address 列存了 "北京市海淀区"(可再分为省、市、区) -- ✅ 拆分为 province、…

2026/7/30 17:08:21 阅读更多 →
MySQL 查询优化实战——关联查询、子查询、分页优化

MySQL 查询优化实战——关联查询、子查询、分页优化

SQL 优化的核心是减少扫描行数。这篇讲常见慢查询的优化方法。 一、关联查询优化 -- 小表驱动大表 -- user 100条,order 100000条 -- 先查 user 再用 IN 查 order SELECT * FROM order WHERE user_id IN (SELECT id FROM user WHERE status 1);-- 关联字段必须加索…

2026/7/30 17:08:21 阅读更多 →
三色标记算法详解(面试题)

三色标记算法详解(面试题)

三色标记算法详解(面试题) 本文档涵盖以下面试题,逐题给出详细答案: 三色标记算法了解吗? 三色标记优点? 标记过程? 产生的问题? 一、三色标记算法了解吗? 1.1 什么是三色标记算法 三色标记算法(Tri-color Marking)是一种并发垃圾标记算法,最早由 Dijkstra 等人提…

2026/7/30 17:06:21 阅读更多 →

日新闻

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南

Windows驱动存储终极清理工具:DriverStoreExplorer完全指南 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 您是否曾因Windows系统盘空间不足而烦恼?是否遇到过设…

2026/7/30 0:00:13 阅读更多 →
如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南

如何3步掌握Video Download Helper:网页视频下载的完整实战指南 【免费下载链接】VideoDownloadHelper Chrome Extension to Help Download Video for Some Video Sites. 项目地址: https://gitcode.com/gh_mirrors/vi/VideoDownloadHelper 你是否曾经在浏览…

2026/7/30 0:00:13 阅读更多 →
“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

“双减”后首个AI备课压力测试报告:覆盖32所中小学的176节AI辅助课,暴露4大隐性增负节点

更多请点击: https://intelliparadigm.com 第一章:AI 教师备课辅助 AI 教师备课辅助系统正逐步成为教育数字化转型的核心支撑工具,它并非替代教师,而是通过语义理解、知识图谱与多模态生成能力,将教师从重复性劳动中解…

2026/7/30 0:00:13 阅读更多 →

周新闻

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 道路桥梁裂缝检测数据集 道路桥梁病害识别检测数据集

深度学习道路桥梁裂缝检测系统 数据集6000张 完整源码已标注数据集训练好的模型环境配置教程程序运行说明文档,可以直接使用!系统支持图片、视频、摄像头等多种方式检测裂缝,功能强大实用。 1数据集6000张 8各类别

2026/7/29 22:18:20 阅读更多 →
深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

深度学习YOLO模型如何训练 PUBG 绝地求生目标检测数据集

pubg数据集 精选原图1.42万数据 1.49万标签 无任何重复、算法增强或冗余图像! pubg绝地求生目标检测数据集 1分类:e_body,14905个标签,txt格式 共计14244张图,99%为640*640尺寸图像 适合yolo目标检测、AI训练关键词&am…

2026/7/29 14:34:28 阅读更多 →
Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex英雄目标检测数据集 深度学习框架YOLO如何训练APEX数据集

Apex检测数据集数据集详情检测类别: allies enemy tag图片总量:7247张训练集:5139张验证集:1425张测试集:683张标注状态:全部已标注,即拿即用数据格式:支持YOLO格式及其他格式&#…

2026/7/29 15:00:03 阅读更多 →

月新闻