title: 迭代 description:Python 迭代(Iteration)教程
Python 迭代(Iteration)教程
大家好!今天来聊聊 Python 中最常用、也最基础的核心概念之一——迭代。它能帮你用最简洁的语法,遍历几乎所有“序列型”或“集合型”的对象,是写 Python 代码绕不开的基本功。
什么是迭代?
简单来说,迭代就是通过循环逐个“拿”出可迭代对象里的元素,处理完一个再拿一个的过程。和其他语言(比如 C/C++/Java)常用索引+ while/for 的手动遍历不同,Python 直接用 for...in 语法做迭代,既直观又安全(不容易越界)。
基础迭代:从最熟悉的序列开始
Python 内置的 list、tuple、str 都是“天然可迭代”的,上手非常快。
1. 迭代列表(List)
拿水果列表举个🌰:
运行后会依次输出每句对应水果的话,完全不用关心索引是多少。
2. 迭代元组(Tuple)
元组的迭代方式和列表一模一样:
特殊迭代:字典(Dict)的三种打开方式
字典也是可迭代对象,但默认只会遍历键(key)。Python 还提供了两个专门的方法,让你灵活遍历值或键值对:
1. 默认遍历键
2. 只遍历值 .values()
3. 同时遍历键和值 .items()
这是最常用的字典迭代方式,配合元组解包(后面会提)一步到位:
冷门但实用:字符串也是可迭代的!
你没看错,字符串可以被拆成单个字符逐个处理:
进阶1:怎么判断对象能不能迭代?
不是所有东西都能放进 for...in 里的,比如整数、浮点数就不行。这时候可以用 collections.abc 模块的 Iterable 类来检查:
进阶2:带索引的迭代 enumerate()
有时候你既需要元素,又需要它在序列里的位置(比如更新列表里的特定元素),这时候 enumerate() 就派上用场了:
运行后会输出 Index 0: apple 这样带位置的内容。
进阶3:同时迭代多个序列
Python 支持两种“多序列迭代”的方式,都非常简洁:
1. 序列里直接是元组/列表——元组解包
比如一组坐标对,每次可以同时取出 x 和 y:
2. 多个独立序列——zip()打包
如果是两个分开的列表(比如姓名和年龄),可以用 zip() 把它们“绑”成一组元组再解包:
⚠️ 注意:如果两个序列长度不一样,zip() 会以最短的那个为准截断。
进阶4:反向/排序后迭代
Python 内置了两个函数,帮你快速调整迭代顺序:
1. 反向迭代 reversed()
2. 排序后迭代 sorted()
sorted() 会生成一个新的有序序列再迭代,不会修改原对象:
实践练习:查找列表的最小和最大值
学了这么多,来做个小练习巩固一下——写一个函数,输入一个数字列表,返回它的最小值和最大值(空列表返回 (None, None)):
总结
- Python 用
for...in语法做迭代,安全又直观 - 内置的
list、tuple、dict、str都是可迭代对象 - 字典默认迭代键,可用
.values()/.items()迭代值/键值对 enumerate()能同时获取索引和元素zip()可以打包多个独立序列迭代reversed()/sorted()能调整迭代顺序collections.abc.Iterable可以检查对象是否可迭代
迭代是 Python 编程的基石,掌握好这些技巧,能让你的代码更“Pythonic”(简洁、优雅、高效)!

