python迭代器

Python迭代器(Iterator)详解

在学习了生成器之后,我们来深入了解Python中的另一个重要概念——迭代器。迭代器是Python中实现迭代协议的对象,是理解生成器和循环机制的基础。


目录

  • 什么是迭代器?
  • 迭代器的工作原理
  • 如何创建迭代器
  • 迭代器与可迭代对象的区别
  • 迭代器的常用方法
  • 迭代器的应用场景
  • 小结

什么是迭代器?

迭代器是一个实现了迭代协议的对象。迭代协议包括两个方法:

  • __iter__():返回迭代器对象本身
  • __next__():返回容器的下一个元素,如果没有元素则抛出StopIteration异常

简单来说,迭代器是一个可以记住遍历位置的对象,可以逐个访问集合中的元素。


迭代器的工作原理

当你使用for循环遍历一个对象时,Python会自动调用该对象的__iter__()方法获取一个迭代器,然后不断调用迭代器的__next__()方法获取元素,直到抛出StopIteration异常,循环结束。


如何创建迭代器

1. 使用内置可迭代对象的迭代器

Python内置的列表、元组、字符串等都是可迭代对象,可以通过iter()函数获得它们的迭代器。

lst = [1, 2, 3]
it = iter(lst)

print(next(it))  # 输出 1
print(next(it))  # 输出 2
print(next(it))  # 输出 3
# print(next(it))  # 会抛出 StopIteration

2. 自定义迭代器类

通过实现__iter__()__next__()方法,可以自定义迭代器。

class MyRange:
    def __init__(self, start, end):
        self.current = start
        self.end = end

    def __iter__(self):
        return self

    def __next__(self):
        if self.current >= self.end:
            raise StopIteration
        val = self.current
        self.current += 1
        return val

for num in MyRange(1, 5):
    print(num)

输出:

1
2
3
4

迭代器与可迭代对象的区别

特性 可迭代对象(Iterable) 迭代器(Iterator)
定义 实现了__iter__()方法的对象 实现了__iter__()__next__()方法的对象
作用 可以返回一个迭代器 用于遍历元素
是否可复用 是(每次调用__iter__()返回新的迭代器) 否(遍历完后不能重置)

迭代器的常用方法

  • iter(obj):返回对象的迭代器
  • next(iterator[, default]):返回迭代器的下一个元素,若没有元素则返回default(如果提供)

迭代器的应用场景

  • 遍历自定义数据结构
  • 实现惰性计算和流式数据处理
  • 与生成器结合,简化迭代逻辑
  • 实现无限序列和复杂迭代规则

小结

  • 迭代器是实现Python迭代协议的核心对象。
  • 通过__iter__()__next__()方法实现。
  • 迭代器可以记住遍历状态,逐个返回元素。
  • 生成器本质上是简化版的迭代器。
  • 理解迭代器有助于深入掌握Python的循环和数据处理机制。
posted @ 2025-07-08 10:00  爆爆啥龙马  阅读(11)  评论(0)    收藏  举报