大锤python日记(迭代器的详细案例)

90 阅读1分钟

迭代器(Iterator)是一种设计模式,它提供了一种访问集合(如列表、元组、字典等)中各个元素的方法,而又不需要暴露集合的内部结构。迭代器模式提供了一种方法来逐个访问聚合对象中的每个元素,而又不暴露该对象的内部表示。

下面是一个使用迭代器的简单例子,代码中有注释解释:

# 定义一个自定义的迭代器类 MyIterator
class MyIterator:
    
    # 构造函数,接收一个列表作为参数
    def __init__(self, my_list):
        self.my_list = my_list
        self.index = 0
    
    # 实现 __iter__ 方法返回迭代器本身(可以是另一个包含__iter__和__next__的类对象)
    def __iter__(self):
        return self
    
    # 实现 __next__ 方法返回下一个元素
    def __next__(self):
        if self.index < len(self.my_list):
            value = self.my_list[self.index]
            self.index += 1
            return value
        else:
            raise StopIteration
            
# 创建一个列表
my_list = [1, 2, 3, 4, 5]

# 使用自定义的迭代器遍历列表
my_iterator = MyIterator(my_list)
for i in my_iterator:
    print(i)

在这个例子中,我们创建了一个自定义的迭代器类 MyIterator,并通过实现 __iter____next__ 方法来使其成为迭代器。在遍历列表时,我们使用 MyIterator 类创建了一个迭代器对象 my_iterator,然后通过 for 循环不断调用 __next__ 方法来获取下一个元素并打印出来。

值得注意的是,在 __next__ 方法中,如果已经遍历到了列表的末尾,就需要抛出 StopIteration 异常来终止迭代。