Python中如何进行迭代器编程?代码举例讲解

在Python中,迭代器(Iterators)用于让对象可以被迭代,它实现了iter()和next()方法。

迭代器有以下主要特点:

  1. 它包含一个状态,每次调用next()方法时都会修改这个状态。
  2. 它应该实现iter()和next()方法。iter()返回迭代器本身,next()返回下一个元素。
  3. 如果迭代器中的所有元素都被访问过,那么再次调用next()会抛出StopIteration异常。

例如,我们可以这样定义一个迭代器:

class Countdown:
    def __init__(self, n):
        self.n = n

    def __iter__(self):
        return self

    def __next__(self):
        if self.n <= 0:
            raise StopIteration
        self.n -= 1
        return self.n

我们可以像列表一样迭代这个迭代器:

for i in Countdown(5):
    print(i)  # prints 5 4 3 2 1

迭代器也可用于for-in循环,因为for-in循环背后就调用了迭代器。

另外,我们也可以手动调用next()方法来迭代:

iterator = Countdown(5)
print(next(iterator))  # 5
print(next(iterator))  # 4
# ...
print(next(iterator))  # 1
print(next(iterator))  # Raises StopIteration

需要注意的是,迭代器是一种数据访问模式,它并不实际存储任何数据,而是按需生成数据。这使得迭代器在一定程度上可以节省内存。

迭代器模式在Python中应用广泛,许多内置类型都实现了迭代器协议,如:

  • 列表.元组:可以被for-in迭代。
  • 字典:迭代键。
  • 文件对象:迭代行。
  • 生成器:是一个特殊的迭代器,使用yield语句。