Python遍历列表、元组、字典、集合
在 Python 中列表list、元组tuple、字典dict和集合set都是可迭代对象Iterable遍历的核心机制是for...in循环但根据它们底层数据结构的差异序列、映射、哈希表遍历方式各有特色。下面我为你由浅入深地详细梳理并特别针对集合Set进行深度扩展。一、遍历列表List与元组Tuple列表和元组都是有序序列遍历方式完全通用元组不可变但遍历语法一致。1. 直接遍历元素最常用直接取出容器内的每个元素。lst[a,b,c]foriteminlst:print(item)# 输出: a, b, c2. 通过索引遍历range 长度适用于需要修改元素值或需要知道元素位置下标时。foriinrange(len(lst)):print(f索引{i}:{lst[i]})3. 同时获取索引和元素enumerate——Pythonic 推荐省去手动维护下标的麻烦效率高且优雅。forindex,valueinenumerate(lst):print(f第{index}个元素是{value})# 可以自定义起始序号forindex,valueinenumerate(lst,start1):print(f第{index}个元素是{value})4. 反向遍历reversed不修改原列表生成反向迭代器。foriteminreversed(lst):print(item)# 输出: c, b, a5. 并行遍历多个序列zip同时拉取多个列表的对应位置元素。names[A,B]scores[90,85]forname,scoreinzip(names,scores):print(f{name}:{score})6. 使用while循环通用但不推荐用于单纯遍历底层通过下标控制适合复杂退出条件但书写繁琐。i0whileilen(lst):print(lst[i])i1二、遍历字典Dict字典是键值对Key-Value映射结构Python 3.7 保证插入顺序。1. 直接遍历默认遍历键keys()d{name:Tom,age:18}forkeyind:print(key)# 输出: name, age# 等价于 for key in d.keys():2. 遍历值values()只关心数据不关心标签。forvalueind.values():print(value)# 输出: Tom, 183. 同时遍历键和值items()——最常用解包元组直接获取完整数据。forkey,valueind.items():print(f{key}-{value})4. 遍历字典时修改内容需转换为列表重点遍历过程中直接修改字典大小增删会报RuntimeError。解决办法是把视图转为列表再遍历。# 错误示范for k in d: del d[k] # 报错# 正确做法forkinlist(d.keys()):ifkage:deld[k]三、遍历集合Set—— 基础篇集合是无序严格说是有序但开发者不可依赖、元素唯一的哈希表。1. 标准for循环遍历元素s{1,2,3,a}foritemins:print(item)# 每次运行顺序可能不同如 a, 1, 2, 32. 使用enumerate获取人为序号由于集合无序“索引”在此处仅代表遍历到第几个元素不代表物理位置。foridx,iteminenumerate(s):print(f第{idx}个取出的元素是:{item})3. 使用迭代器iter和next底层实现通常用于手动精细控制。ititer(s)whileTrue:try:itemnext(it)print(item)exceptStopIteration:break4. 集合推导式Comprehension本质上也是一种遍历并生成新集合的语法糖。new_set{x*2forxinsifisinstance(x,int)}注意集合不支持索引访问如s[0]也不支持切片因此无法通过range(len(s))的方式按位置遍历。四、深入详解 Python 中的集合Set既然你要“详细介绍”我把集合从底层原理到实战细节彻底展开。1. 核心特性无序性基于哈希表Hash Table实现元素存放位置由哈希值决定不维护插入顺序虽然 CPython 3.6 后实现上保留了插入顺序但官方文档不保证请勿依赖。唯一性自动去重任何两个相等的元素只会保留一个。元素必须可哈希Hashable不可变类型int, str, tuple可以放入可变类型list, dict, set不能放入否则报TypeError: unhashable type。2. 创建集合的坑a{}# 这是空字典不是集合bset()# 这是正确的空集合c{1,2,3}# 非空集合3. 增删改查核心方法方法作用注意事项add(elem)添加元素如果已存在则无效果update(iterable)合并另一个可迭代对象批量加相当于 remove(elem)删除元素元素不存在会报错KeyErrordiscard(elem)删除元素元素不存在也不会报错推荐pop()随机弹出一个元素空集合调用会报错clear()清空集合-4. 集合数学运算高频考点这是集合相比其他数据结构最强大的功能性能极高基于哈希碰撞检测。运算操作符方法名含义并集|union()两者加起来的所有元素交集intersection()两者共有的元素差集-difference()在 A 但不在 B 中的元素对称差集^symmetric_difference()只属于其中一个集合的元素剔除共有子集/超集/issubset()/issuperset()判断包含关系是否不相交-isdisjoint()没有交集返回 TrueA{1,2,3}B{3,4,5}print(A-B)# {1, 2}print(AB)# {3}print(A^B)# {1, 2, 4, 5}5. 巨大的性能优势 —— 成员检测列表Listif x in list时间复杂度O(n)遍历查找。集合Setif x in set时间复杂度O(1)哈希直接命中。实战建议如果需要频繁判断某个元素是否存在务必先将列表转为集合再判断。6. 不可变集合 ——frozenset既然集合不能包含集合因为可变但业务上可能需要嵌套结构。frozenset是集合的不可变版本可以作为字典的键或另一个集合的元素。fsfrozenset([1,2,3])d{fs:value}# 合法7. 遍历集合时修改集合同样不安全和字典一样遍历中修改集合大小会报错。解决方案遍历其副本。s{1,2,3,4}foriteminlist(s):# 转换为列表副本ifitem%20:s.remove(item)print(s)# {1, 3}总结对比快速记忆数据结构遍历常用方式是否有序是否允许重复能否索引列表for item in listenumerate✅✅✅元组同上✅✅✅字典for k,v in dict.items()✅ (3.7)键唯一值随意按键名dict[key]集合for item in set❌ (不可依赖)❌ (自动去重)❌ (哈希表无序)最后送给你一条 Python 之禅“Flat is better than nested.”遍历时优先使用for...in直接解包少用range(len())代码会更具可读性。

相关新闻

从零开始构建企业级 Agent:大模型开发实战指南(收藏版)

从零开始构建企业级 Agent:大模型开发实战指南(收藏版)

本文以构建查询订单 Agent 为例,逐步介绍如何从最简单的实现开始,发展成一个能在企业中实际应用的高级 Agent。文章详细解析了 Agent 的组成(模型Harness),涵盖了工具调用、客户端与服务器端区别、Tool UI 设计、通用工…

2026/6/27 9:30:02阅读更多 →
大学生必懂的AI就业方向

大学生必懂的AI就业方向

计算机专业:三大AI技术就业方向 计算机、软件工程、大数据、人工智能等专业,可直接切入AI技术赛道,按“门槛高低、就业难度、市场需求”分为三类,覆盖从顶尖研发到主流就业的全路径。 1 AI技术核心岗方向 这是AI领域的顶尖岗位&am…

2026/6/27 9:30:02阅读更多 →
限时解锁|IntelliJ IDEA与Eclipse插件生态生存现状报告(2024 Q2):217款主流插件兼容性矩阵表+3个即将停更的Eclipse核心插件预警

限时解锁|IntelliJ IDEA与Eclipse插件生态生存现状报告(2024 Q2):217款主流插件兼容性矩阵表+3个即将停更的Eclipse核心插件预警

更多请点击: https://codechina.net 第一章:限时解锁|IntelliJ IDEA与Eclipse插件生态生存现状报告(2024 Q2):217款主流插件兼容性矩阵表3个即将停更的Eclipse核心插件预警 2024年第二季度,Jav…

2026/6/27 9:30:02阅读更多 →
如何快速掌握Adobe-GenP:3分钟完成Adobe全系列软件激活的终极指南

如何快速掌握Adobe-GenP:3分钟完成Adobe全系列软件激活的终极指南

如何快速掌握Adobe-GenP:3分钟完成Adobe全系列软件激活的终极指南 【免费下载链接】Adobe-GenP Adobe CC 2019/2020/2021/2022/2023 GenP Universal Patch 3.0 项目地址: https://gitcode.com/gh_mirrors/ad/Adobe-GenP 你是否曾经为Adobe Creative Cloud的高…

2026/6/27 11:15:11阅读更多 →
HarmonyOS7 AppStorage 和 PersistentStorage 到底该选谁?全局状态别再用乱

HarmonyOS7 AppStorage 和 PersistentStorage 到底该选谁?全局状态别再用乱

文章目录 前言AppStorage:内存级的全局仓库PersistentStorage:能活过重启的存储两者配合的最佳实践实战:登录态 主题色 语言的全局管理几个实用建议最后聊两句 前言 做鸿蒙开发,绕不开一个问题:用户登录了&#xff…

2026/6/27 11:15:11阅读更多 →
【IDEA数据库管理终极指南】:20年资深架构师亲授12个被90%开发者忽略的高效技巧

【IDEA数据库管理终极指南】:20年资深架构师亲授12个被90%开发者忽略的高效技巧

更多请点击: https://codechina.net 第一章:IDEA数据库管理的核心价值与认知重构 IntelliJ IDEA 不仅是 Java 开发者的首选 IDE,其内建的 Database Tools 早已超越传统“查看数据”的辅助定位,演进为贯穿开发全生命周期的数据协同…

2026/6/27 11:15:11阅读更多 →
限时开放|IDEA新手诊断工具包(含自动检测脚本+配置健康度评分系统):仅限前500名下载,3天后下线

限时开放|IDEA新手诊断工具包(含自动检测脚本+配置健康度评分系统):仅限前500名下载,3天后下线

更多请点击: https://codechina.net 第一章:IDEA新手诊断工具包概览 IntelliJ IDEA 不仅是一款功能强大的 Java 集成开发环境,更内置了一套面向初学者的诊断辅助体系——“新手诊断工具包”。它并非独立插件,而是由 IDE 内核自动…

2026/6/27 11:15:11阅读更多 →
IntelliJ IDEA快捷键失效、代码提示消失、索引崩溃?——IDE底层索引机制深度解析(附3分钟自愈脚本)

IntelliJ IDEA快捷键失效、代码提示消失、索引崩溃?——IDE底层索引机制深度解析(附3分钟自愈脚本)

更多请点击: https://codechina.net 第一章:IntelliJ IDEA快捷键失效、代码提示消失、索引崩溃?——IDE底层索引机制深度解析(附3分钟自愈脚本) IntelliJ IDEA 的“卡顿”“无提示”“CtrlClick 失效”等表象&#xf…

2026/6/27 11:15:11阅读更多 →
从“关键词”到“知识图谱”:AIGEO重塑实体企业数字基建

从“关键词”到“知识图谱”:AIGEO重塑实体企业数字基建

在生成式AI全面普及的当下,信息获取的底层逻辑正在经历深刻变革。用户从传统的“关键词搜网页”转变为“一句话提问AI找服务”,这种交互方式的转变,直接催生了AIGEO(生成式引擎优化)这一新兴领域。面对这一趋势&#x…

2026/6/27 11:10:10阅读更多 →
【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体

【人工智能】一文搞定到底什么是智能体 一文搞定到底什么是智能体【人工智能】一文搞定到底什么是智能体一. LM,WorkFlow,Agent分别有什么么不同二. Agent的思考过程是怎样的三. Agent的五个核心部分1)LLM2)Prompt3)Me…

2026/6/26 11:03:22阅读更多 →
嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

嵌入式GUI控件实战:ROTARY、SCROLLBAR、SLIDER原理与应用

1. 嵌入式GUI控件:从原理到实战的深度解析在嵌入式系统开发中,图形用户界面(GUI)的设计与实现往往是项目从“能用”到“好用”的关键一跃。不同于资源充沛的PC或移动平台,嵌入式设备的GUI需要在有限的CPU性能、内存空间…

2026/6/27 5:46:02阅读更多 →
Google AI Studio 300美元额度的真相与实战指南

Google AI Studio 300美元额度的真相与实战指南

1. 这300美金不是“送钱”,而是Google埋下的第一道技术门槛 你看到标题里那个醒目的“$300美金”时,第一反应可能是:又一个免费额度?领完就完事?我亲手试过——这300美金根本不是红包,而是一张入场券&…

2026/6/26 9:29:01阅读更多 →
10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声:Retrieval-based-Voice-Conversion-WebUI完整指南

10分钟AI语音克隆与实时变声&#xff1a;Retrieval-based-Voice-Conversion-WebUI完整指南 【免费下载链接】Retrieval-based-Voice-Conversion-WebUI Easily train a good VC model with voice data < 10 mins! 项目地址: https://gitcode.com/GitHub_Trending/re/Retrie…

2026/6/27 0:04:03阅读更多 →
Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider:3分钟AI智能分层,彻底告别手动抠图时代

Layerdivider&#xff1a;3分钟AI智能分层&#xff0c;彻底告别手动抠图时代 【免费下载链接】layerdivider A tool to divide a single illustration into a layered structure. 项目地址: https://gitcode.com/gh_mirrors/la/layerdivider 还在为复杂的图像分层工作烦…

2026/6/27 0:04:03阅读更多 →
Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

Tomcat中X-Frame-Options配置实战:防御点击劫持的四种方法与最佳实践

1. 项目概述&#xff1a;为什么X-Frame-Options是Web安全的“防盗门”&#xff1f;最近在排查一个老项目的安全审计报告时&#xff0c;又被提到了“点击劫持”风险&#xff0c;矛头直指缺失的X-Frame-Options响应头。这已经不是第一次了&#xff0c;很多开发团队&#xff0c;尤…

2026/6/27 0:04:03阅读更多 →