python中怎样实现迭代器?

时间:2024-10-31 20:27:55

在 Python 中,可以通过实现 __iter__() 和 __next__() 方法来创建一个迭代器。其中 __iter__() 方法返回一个迭代器对象自身,而 __next__() 方法返回迭代器中的下一个值。

以下是一个迭代器的示例代码:

class MyIterator:
    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
        else:
            self.current += 1
            return self.current - 1

在上面的示例中,MyIterator 类实现了迭代器的功能。__init__() 方法用于初始化迭代器的起始值和结束值,__iter__() 方法返回迭代器对象自身,__next__() 方法用于返回迭代器中的下一个值。当迭代器的值超过了结束值,__next__() 方法会抛出 StopIteration 异常。

使用迭代器的示例代码如下:

my_iterator = MyIterator(1, 5)
for i in my_iterator:
    print(i)

上述代码会输出以下结果:

1
2
3
4
5

在迭代器中,可以使用 yield 关键字来简化代码。yield 关键字可以将一个函数转换为一个生成器,生成器会自动实现迭代器的 __iter__() 和 __next__() 方法。

以下是上述迭代器的示例代码,使用 yield 关键字来实现:

def my_iterator(start, end):
    current = start
    while current <= end:
        yield current
        current += 1

使用迭代器的示例代码和输出结果与之前的示例相同。

从上面的两个迭代器实例中可以看到:第一个实例定义了一个类和几个函数实现迭代器功能,第二个实例则仅仅通过一个函数实现了迭代器功能。