在Python中,创建自定义迭代器需要实现两个特殊方法:__iter__()
和 __next__()
。
__iter__()
方法返回迭代器对象本身。如果要在迭代器中使用多个对象,可以在这个方法中返回其他对象。__next__()
方法返回迭代器的下一个值。当没有更多的元素可返回时,它应该抛出一个StopIteration
异常。
下面是一个简单的自定义迭代器示例:
class MyIterator:
def __init__(self, max):
self.max = max
self.current = 0
def __iter__(self):
return self
def __next__(self):
if self.current >= self.max:
raise StopIteration
else:
self.current += 1
return self.current ** 2
# 使用自定义迭代器
my_iter = MyIterator(5)
for i in my_iter:
print(i)
# 输出:
# 1
# 4
# 9
# 16
# 25
在这个例子中,MyIterator
类接受一个参数 max
,表示要生成的平方数的数量。__next__()
方法会返回从 1 到 max
的每个整数的平方,并在达到 max
后抛出 StopIteration
异常。
使用这个自定义迭代器的方式与使用内置迭代器的方式相同,可以使用 for 循环遍历其返回的值。