在Python中,创建一个迭代器需要实现两个方法:__iter__()
和__next__()
。
__iter__()
方法返回迭代器对象本身。如果迭代器对象与实例是同一个对象,则返回self;如果是生成器函数,则不需要实现这个方法。__next__()
方法返回迭代器的下一个值。当没有更多的元素可以迭代时,它应该抛出StopIteration异常。
下面是一个简单的例子,创建一个迭代器用于生成0到n之间的数字:
class MyIterator:
def __init__(self, max):
self.max = max
def __iter__(self):
self.n = 0
return self
def __next__(self):
if self.n <= self.max:
result = self.n
self.n += 1
return result
else:
raise StopIteration
# 使用迭代器
my_iterator = MyIterator(5)
for i in my_iterator:
print(i)
另一种创建迭代器的方式是使用生成器函数,这种方式更简洁,更易于理解和维护。生成器函数使用yield
关键字来产生一系列值。每当调用生成器函数时,它会从上次停止的地方继续执行,直到遇到下一个yield
语句或函数结束。下面是一个等效于上述迭代器的生成器函数的例子:
def my_generator(max):
n = 0
while n <= max:
yield n
n += 1
# 使用生成器
for i in my_generator(5):
print(i)
这两种方式都可以创建迭代器,但是生成器函数通常更受欢迎,因为它更简洁、更易于理解和维护。