Python迭代是按需逐个访问元素的过程,由可迭代对象(含__iter__方法)和迭代器(含__next__方法)共同实现;for循环隐式调用二者,内置工具如enumerate、zip、reversed等增强迭代能力。

Python中的迭代,本质是按需逐个访问数据集合中元素的过程,不是一次性加载全部内容,而是边取边用。它背后有一套统一的协议支撑,让不同数据类型能用同一种方式被遍历。
可迭代对象和迭代器的区别
可迭代对象(如列表、字符串、字典、元组、集合)本身不直接提供“下一个元素”,但它有 __iter__() 方法,能返回一个真正的迭代器。迭代器才是那个带 __next__() 方法、能一步步吐出数据的对象。
- 列表
[1,2,3]是可迭代对象,但不是迭代器;调用iter([1,2,3])才得到它的迭代器 - 迭代器只能往前走,不能倒退;一旦用完,再次调用
next()就会触发 StopIteration 异常 -
for循环内部自动调用__iter__()和反复调用__next__(),所以你平时写for x in lst:其实已经隐式用了整套机制
常见数据类型的迭代方式
不同容器默认迭代行为不同,掌握规律能少写很多冗余代码:
-
列表/元组/字符串/集合:直接
for item in data:就拿到每个元素 -
字典:
for k in d:迭代键;for v in d.values():迭代值;for k, v in d.items():同时拿键和值 -
文件对象:
for line in f:每次读一行,内存友好,不用f.readlines()全部载入
带索引或组合多个序列的迭代
纯元素遍历不够用时,Python 提供了几个内置迭代工具:
mallcloud商城基于SpringBoot2.x、SpringCloud和SpringCloudAlibaba并采用前后端分离vue的企业级微服务敏捷开发系统架构。并引入组件化的思想实现高内聚低耦合,项目代码简洁注释丰富上手容易,适合学习和企业中使用。真正实现了基于RBAC、jwt和oauth2的无状态统一权限认证的解决方案,面向互联网设计同时适合B端和C端用户,支持CI/CD多环境部署,并提
立即学习“Python免费学习笔记(深入)”;
-
enumerate():给元素自动加序号,
for i, x in enumerate(['a','b','c'])→(0,'a'), (1,'b'), (2,'c') -
zip():把多个序列“拉链式”配对,
for a, b in zip([1,2,3], ['x','y','z'])→(1,'x'), (2,'y'), (3,'z') -
reversed():生成反向迭代器,
for x in reversed([1,2,3])→3,2,1
手动控制迭代过程
理解 iter() 和 next() 能帮你调试或实现特殊逻辑:
-
it = iter('abc')创建迭代器 -
next(it)返回'a',再调一次得'b',直到抛出 StopIteration - 可用
try/except捕获异常来手动模拟for循环行为 - 传入
next(it, default)可设默认值,避免异常,适合不确定长度的场景










