Python 迭代器

Python 中的迭代器是一个可以被遍历的对象,它能返回序列中的元素一个接一个地进行迭代。迭代器对象从集合的第一个元素开始访问,直到所有的元素都被访问完结束。迭代器只能向前不能后退。

在 Python 3 中创建一个迭代器很简单。只需要实现两个方法:__iter__()__next__()

__iter__() 方法

__iter__() 方法返回一个迭代器对象,该对象实现了 __next__() 方法。在本教程中,我们将简单地返回自身:

class MyIterator:
    def __init__(self, data):
        self.data = data
        self.index = 0

    def __iter__(self):
        return self

__next__() 方法

__next__() 方法返回序列中的下一个元素。如果没有更多元素,则应引发 StopIteration 异常:

    def __next__(self):
        if self.index >= len(self.data):
            raise StopIteration
        result = self.data[self.index]
        self.index += 1
        return result

使用迭代器

现在我们可以创建一个 MyIterator 对象,并遍历其中的元素:

if __name__ == "__main__":
    data = [1, 2, 3, 4]
    iter_obj = MyIterator(data)
    for item in iter_obj:
        print(item)

这将打印出 1, 2, 3, 4,每个数字占一行。

使用生成器创建迭代器

Python 还提供了一个更简单的方法来创建迭代器:生成器。生成器是一种特殊类型的函数,它能够在执行期间返回多个值。我们可以使用 yield 语句来定义一个生成器:

def my_generator(data):
    for item in data:
        yield item

现在,我们可以像这样使用我们的生成器:

if __name__ == "__main__":
    data = [1, 2, 3, 4]
    for item in my_generator(data):
        print(item)

输出结果与使用迭代器相同。使用生成器可以让我们的代码更简洁、更易读。