迭代器
Python 迭代器与可迭代对象详解
可迭代对象 (Iterable)
可迭代对象是指可以直接作用于 for 循环的对象。在 Python 中,常见的可迭代对象包括:
- 集合数据类型:
list,tuple,dict,set,str - 生成器 (generator) 和带有
yield的生成器函数
检查可迭代性
可以使用 isinstance() 和 collections.abc.Iterable 来判断一个对象是否是可迭代的:
迭代器 (Iterator)
迭代器是更特殊的可迭代对象,它不仅可以用在 for 循环中,还可以被 next() 函数不断调用并返回下一个值,直到抛出 StopIteration 异常。
检查迭代器
可以使用 isinstance() 和 collections.abc.Iterator 来判断:
将可迭代对象转为迭代器
可以使用 iter() 函数将可迭代对象转为迭代器:
迭代器与可迭代对象的区别
- 数据流特性:迭代器表示一个数据流,可以惰性计算,不需要预先知道序列长度
- 无限序列:迭代器可以表示无限序列(如全体自然数),而列表等集合类型不能
- 内存效率:迭代器一次只产生一个元素,内存效率更高
for 循环的实现原理
Python 的 for 循环本质上是通过迭代器实现的。例如:
等价于:
实际应用建议
- 处理大数据集:使用迭代器可以节省内存
- 自定义迭代器:实现
__iter__()和__next__()方法 - 生成器表达式:比列表推导式更节省内存
总结
理解迭代器和可迭代对象的区别对于编写高效、Pythonic的代码非常重要,特别是在处理大型数据集或需要惰性计算的场景中。

