从“数据容器“的角度,彻底掌握 Python 五大核心数据结构

发布时间:2026/7/22 4:38:20

从“数据容器“的角度,彻底掌握 Python 五大核心数据结构
一、数据结构全景图1.1 一句话认识五大结构# 如果把数据比作物品数据结构就是不同的收纳方式 str hello # 字符的排列像一串珠子 list [1, 2, 3] # 有序的箱子可以随意增删改 tuple (1, 2, 3) # 封存的盒子创建后不能改变 dict {name: 张三} # 带标签的抽屉通过标签找东西 set {1, 2, 3} # 独一无二的收藏柜自动去重1.2 核心特性速查表特性strlisttupledictset是否有序有序有序有序有序3.7无序是否可变不可变可变不可变可变可变是否允许重复-允许允许键唯一元素唯一访问方式整数索引整数索引整数索引键key无索引元素类型限制字符任意任意键不可变元素不可变创建符号 [ ]( ){ }{ }典型场景文本处理动态序列不可变序列键值映射去重/集合运算二、字符串str—— 文本的容器2.1 本质与特性字符串是不可变的字符序列每个字符就像项链上的一颗珠子一旦串好就不能改变。# 创建方式 s1 hello # 单引号 s2 world # 双引号 s3 多行 字符串 # 三引号 s4 str(123) # 类型转换 → 123 # 核心特性不可变 s hello # s[0] H # TypeError: str object does not support item assignment s H s[1:] # 创建新字符串 Hello2.2 常用方法速查s Hello World # 大小写转换 s.upper() # HELLO WORLD s.lower() # hello world s.capitalize() # hello world s.title() # Hello World # 去除空白 s.strip() # Hello World s.lstrip() # Hello World s.rstrip() # Hello World # 查找与判断 s.find(World) # 8返回索引不存在返回 -1 s.index(World) # 8不存在抛出 ValueError s.startswith( ) # True s.endswith(ld ) # True 123.isdigit() # True abc.isalpha() # True # 分割与拼接 s.split() # [Hello, World] a,b,c.split(,) # [a, b, c] -.join([a,b]) # a-b # 替换 s.replace(World, Python) # Hello Python 2.3 常用场景# 1. 用户输入清洗 username input(请输入用户名).strip().lower() # 2. 格式化输出 name 张三 age 25 print(f姓名{name}年龄{age}) # 3. 字符串拼接大量拼接用 join result -.join([2026, 07, 21]) # 2026-07-21 # 4. 字符串切片 text Python text[::-1] # nohtyP反转 text[1:4] # yth2.4 记忆要点字符串是不可变的字符序列所有修改操作实际上都是创建新字符串。三、列表list—— 动态的容器3.1 本质与特性列表是可变的有序序列像一个可以随时增减物品的购物车。# 创建方式 lst1 [] # 空列表 lst2 [1, 2, 3] # 直接创建 lst3 list(hello) # [h,e,l,l,o] lst4 [x*2 for x in range(5)] # [0,2,4,6,8] 列表推导式 # 核心特性可变 lst [1, 2, 3] lst[0] 100 # 修改 lst.append(4) # 添加 lst.pop() # 删除3.2 常用方法速查方法说明示例append(x)末尾添加一个元素lst.append(4)extend(iterable)末尾添加多个元素lst.extend([4,5])insert(i, x)指定位置插入lst.insert(0, 0)remove(x)删除第一个匹配项lst.remove(2)pop(i)删除并返回指定位置元素lst.pop(0)clear()清空列表lst.clear()index(x)返回第一个匹配项索引lst.index(3)count(x)统计元素出现次数lst.count(2)sort()原地排序lst.sort()reverse()原地反转lst.reverse()copy()浅拷贝lst2 lst.copy()3.3 常用场景# 1. 数据收集与遍历 students [] while True: name input(输入姓名输入q退出) if name q: break students.append(name) # 2. 栈后进先出 stack [] stack.append(1) # 入栈 stack.append(2) stack.pop() # 出栈 → 2 # 3. 队列先进先出用 collections.deque 更好 from collections import deque queue deque([1, 2, 3]) queue.append(4) # 入队 queue.popleft() # 出队 → 1 # 4. 列表推导式快速生成 squares [x**2 for x in range(10) if x % 2 0] # [0,4,16,36,64]四、元组tuple—— 固定的容器4.1 本质与特性元组是不可变的有序序列像一个被封存的时光胶囊一旦创建就无法改变。# 创建方式 t1 () # 空元组 t2 (1,) # 单元素元组注意逗号 t3 (1, 2, 3) # 直接创建 t4 tuple([1, 2, 3]) # 从列表转换 # 核心特性不可变 t (1, 2, 3) # t[0] 100 # TypeError: tuple object does not support item assignment # 但可以整体重新赋值 t (4, 5, 6) #4.2 常用方法元组的方法很少因为不可变方法说明示例count(x)统计元素出现次数t.count(2)index(x)返回第一个匹配项索引t.index(3)len(t)获取长度len(t)4.3 常用场景# 1. 函数返回多个值 def get_user(): return 张三, 25, 男 # 返回元组 name, age, sex get_user() # 解包赋值 # 2. 字典的键元组是不可变的 locations { (39.9, 116.4): 北京, (31.2, 121.5): 上海 } # 3. 记录不可变的数据 DAYS_OF_WEEK (一, 二, 三, 四, 五, 六, 日) MONTHS (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12) # 4. 赋值 x, y, z (1, 2, 3) a, b b, a # 交换变量五、字典dict—— 映射的容器5.1 本质与特性字典是键值对Key-Value的映射容器像一本真正的字典——通过字键快速找到释义值。# 创建方式 d1 {} # 空字典 d2 {name: 张三, age: 20} # 直接创建 d3 dict(name张三, age20) # 关键字参数 d4 dict([(name,张三), (age,20)]) # 从键值对列表 # 核心特性通过键访问 d {name: 张三, age: 20} print(d[name]) # 张三 d[city] 北京 # 新增5.2 常用方法速查方法说明示例d[key]访问键不存在报错d[name]d.get(key, default)安全访问d.get(score, 0)d.keys()获取所有键d.keys()d.values()获取所有值d.values()d.items()获取所有键值对d.items()d.update(d2)合并字典d.update({age:21})d.pop(key)删除并返回值d.pop(age)d.popitem()删除并返回最后一项d.popitem()d.clear()清空字典d.clear()5.3 常用场景# 1. 计数器统计频次 text hello world count {} for char in text: count[char] count.get(char, 0) 1 print(count) # {h:1, e:1, l:3, o:2, :1, w:1, r:1, d:1} # 2. 配置管理 config { host: localhost, port: 8080, debug: True } port config.get(port, 3000) # 8080 timeout config.get(timeout, 30) # 30默认值 # 3. 数据映射 user {id: 101, name: 张三, age: 20} # 4. 嵌套字典 students { s001: {name: 张三, age: 20}, s002: {name: 李四, age: 21} } print(students[s001][name]) # 张三 # 5. 字典推导式 squares {x: x**2 for x in range(5)} # {0:0, 1:1, 2:4, 3:9, 4:16}5.4 注意事项# 1. 键必须是不可变类型 d { name: 张三, # 字符串 101: 学号, # 数字 (1,2): 坐标, # 元组 # [1,2]: 列表 # 列表不能作为键 # {a:1}: 字典 # 字典不能作为键 } # 2. get() 无法区分键不存在和值为 None d {score: None} print(d.get(score)) # None键存在 print(d.get(score2)) # None键不存在 # 用 in 判断 if score in d: print(d[score])六、集合set—— 唯一的容器6.1 本质与特性集合是无序、唯一的元素容器像一个自动去重的收藏柜——每个物品只能存放一次。# 创建方式 s1 set() # 空集合注意{} 是空字典 s2 {1, 2, 3} # 直接创建 s3 set([1, 2, 2, 3]) # 从列表创建 → {1, 2, 3}自动去重 s4 {x for x in range(5)} # 集合推导式 → {0,1,2,3,4} # 核心特性元素唯一 无序 s {1, 2, 3} s.add(2) # 重复被忽略 s.add(4) # 添加成功 print(s) # {1, 2, 3, 4}顺序可能不同6.2 常用方法速查方法说明示例add(x)添加元素重复忽略s.add(5)update(iterable)批量添加s.update([5,6])remove(x)删除元素不存在报错s.remove(3)discard(x)删除元素不存在忽略s.discard(10)pop()删除并返回任意元素s.pop()clear()清空集合s.clear()union(s2)/|并集s1 | s2intersection(s2)/交集s1 s2difference(s2)/-差集s1 - s2symmetric_difference(s2)/^对称差集s1 ^ s26.3 常用场景# 1. 去重 nums [1, 2, 2, 3, 3, 3, 4] unique list(set(nums)) # [1, 2, 3, 4] # 2. 成员关系判断 vip_users {张三, 李四, 王五} if 张三 in vip_users: print(VIP用户) # 3. 数据比对 old_data {a, b, c} new_data {b, c, d} # 新增的元素 added new_data - old_data # {d} # 删除的元素 removed old_data - new_data # {a} # 保留的元素 kept old_data new_data # {b, c} # 4. 提取文本中的不同字符 text hello world chars set(text) # {h,e,l,o, ,w,r,d} # 5. 统计不同单词 words set(python is great python is powerful.split()) # {python, is, great, powerful}

相关新闻

动漫创作赛事指南:从题材选择到商业价值

动漫创作赛事指南:从题材选择到商业价值

2026/7/22 4:38:20

1. 赛事背景与核心价值"燃烧吧,动漫の魂!"这个标题本身就充满了热血与激情。作为从业十余年的动漫内容创作者,我深知这类征文活动对行业的特殊意义。不同于常规文学比赛,动漫题材创作要求作者同时具备故事架构能力、视觉想象力以及…

RAG 索引为什么会召回已删内容:增量更新与删除传播

RAG 索引为什么会召回已删内容:增量更新与删除传播

2026/7/22 4:28:20

RAG 的向量索引,本质上是源数据的一份缓存。源文档更新或删除后,如果索引没有同步,检索仍会返回旧内容,而且通常不会报错。用户看到的是一条看似正常的答案,系统却可能引用了已经失效的事实。 一、最容易漏掉的是删除…

嵌入式系统异常与中断:内忧外患的底层处理机制与实战设计

嵌入式系统异常与中断:内忧外患的底层处理机制与实战设计

2026/7/22 4:28:20

1. 从“内忧外患”说起:理解系统运行的两种扰动做嵌入式或者底层系统开发的朋友,对“异常”和“中断”这两个词一定不陌生。它们就像是系统运行过程中遇到的两种“意外事件”,一个来自内部,一个来自外部,共同构成了我们…

瑜伽普拉提门店管理系统|线上约课直播教学商城会员营销小程序

瑜伽普拉提门店管理系统|线上约课直播教学商城会员营销小程序

2026/7/22 5:58:23

大家好,我是成都小火科技公司的软件产品经理,今天是2026年7月21日,周二。今天的给大家介绍我们为某甲方开发的一套瑜伽馆系统,今天主要介绍学员小程序端。本系统主要针对连锁瑜伽馆的经营场景,并且可以完全适用于单店瑜…

GPT-5.6 Sol效率优化:从API调优到系统架构的完整实践指南

GPT-5.6 Sol效率优化:从API调优到系统架构的完整实践指南

2026/7/22 5:58:23

在实际 AI 模型开发和应用中,效率优化是一个贯穿始终的核心议题。最新发布的 GPT-5.6 Sol 虽然在多项专业评测中取得了前沿水平的成绩,但在实际部署和长周期任务执行过程中,其资源消耗、响应延迟和内存管理等方面仍存在可优化的空间。官方已确…

运动损伤预测模型:XGBoost与LSTM的实战应用

运动损伤预测模型:XGBoost与LSTM的实战应用

2026/7/22 5:58:23

1. 运动损伤预测模型的核心价值与应用场景运动员和健身爱好者最头疼的问题就是突如其来的运动损伤。一次意外的拉伤或扭伤,轻则中断训练计划,重则影响职业生涯。我在职业篮球队担任数据分析师时,亲眼见过太多因未及时识别风险而导致的悲剧。传…

BiModernVBERT:双流视觉文档检索模型原理与实践

BiModernVBERT:双流视觉文档检索模型原理与实践

2026/7/22 5:58:23

1. BiModernVBERT视觉文档检索模型概述视觉文档检索(Visual Document Retrieval)作为多模态信息处理的前沿领域,正在彻底改变我们处理非结构化文档数据的方式。BiModernVBERT作为该领域的最新突破性模型,通过创新的双流架构实现了…

情感化智能设备设计:从技术实现到生活温度

情感化智能设备设计:从技术实现到生活温度

2026/7/22 5:58:23

1. 项目概述:当科技遇见生活温度"暖小助"这个命名本身就透露着产品定位——它不是冷冰冰的效率工具,而是能融入日常生活的温暖存在。作为一款生活伴侣类应用/设备,其核心价值在于通过细腻的功能设计,在用户无感知的状态…

基于深度学习的实时弹幕避障系统设计与优化

基于深度学习的实时弹幕避障系统设计与优化

2026/7/22 5:48:23

1. 项目背景与核心需求弹幕作为现代视频平台的标志性交互方式,在提升用户参与感的同时也带来了内容遮挡问题。传统弹幕系统采用固定轨道或简单碰撞检测,难以应对复杂视频场景。我在毕业设计中实现的这套基于深度学习的语义分割方案,能够智能识…

微服务进阶:服务网格与Istio

微服务进阶:服务网格与Istio

2026/7/21 5:45:57

541|微服务进阶:服务网格与Istio 上篇文章我们聊了微服务的基本概念和拆分方法。 但微服务多了,问题也多了: 服务之间怎么通信? 怎么监控每个服务的调用链路? 熔断、限流、重试怎么做? 安全认证怎么统一? 以前这些都靠SDK库(比如Hystrix、Feign),每个服务都要集成…

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

零售超级终端全域协同:ShareKit 碰一碰商品流转业务落地案例

2026/7/21 9:56:14

一、零售门店全域协同业务背景与行业痛点 1.1 门店超级终端设备矩阵(连锁便利店/商超标准配置) 自助收银Kiosk一体机:顾客结算、自助核销优惠券、商品素材预览;运营折叠平板:店长后台商品上新、图片录入、活动配置、…

噗叽短视频界面分析

噗叽短视频界面分析

2026/7/21 3:09:32

1 和小红书类似,可以采用类似判断方法------------其实他比小红书好判断,因为他没有图片,控件位置几乎是固定的,都不用判断------------2 因为他没有点赞按钮------------而且几乎所有控件位置都是完全一样的,所以我就…

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

设计EDA 首席专家 12 维度 JD(HR 仅高管 / HRD 使用)

2026/7/22 0:08:09

定位:公司 EDA 技术最高负责人、技术天花板、战略级专家、流片总兜底人 属于P9/Fellow/ 首席科学家级,不做日常执行,管方向、管架构、管风险、管突破。1. 对标层级内部职级:P9 / 首席专家 / Fellow 外部对标:华为 20–…

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

费用率无法实时监控怎么办?费用率联动预算管理怎么实现?

2026/7/22 0:08:09

很多企业费用管控存在严重滞后性:日常差旅、招待、营销、人力费用持续发生,但费用率只能等到月末结账、营收数据出来后才能计算核对,月度中途费用超标、营收不达标导致的费用率失衡完全无法感知。等到月末发现整体费用率远超预算目标时&#…

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

设计EDA 研发总监 12 维度 JD(HR 内部仅高管层使用)

2026/7/22 0:08:09

定位:公司 EDA / 设计平台最高管理岗,技术 管理 经营三重决策,对整体流片、效率、质量、成本、团队负最终责任1. 对标层级内部职级:M3 / P8 / 总监级 外部对标:华为 20 级、互联网 M2 / 总监、头部芯片 / EDA 公司研…