迭代器(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
异常来终止迭代。