除了使用内置的迭代器类型之外,Python还允许自定义迭代器类型。要创建一个自定义迭代器,可以定义一个类,并在类中实现__iter__
和__next__
方法。例如,可以创建一个生成斐波那契数列的迭代器:
class Fibonacci:
def __init__(self):
self.prev = 0
self.curr = 1
def __iter__(self):
return self
def __next__(self):
value = self.curr
self.curr += self.prev
self.prev = value
return value
在这个例子中,Fibonacci
类定义了__iter__
和__next__
方法。__iter__
方法返回迭代器对象本身,而__next__
方法生成斐波那契数列的下一个值。可以使用这个迭代器来生成斐波那契数列的前10个数:
class Fibonacci:
def __init__(self):
self.prev = 0
self.curr = 1
def __iter__(self):
return self
def __next__(self):
value = self.curr
self.curr += self.prev
self.prev = value
return value
fib = Fibonacci()
for i in range(10):
print(next(fib))
输出结果为:
Copy code1
1
2
3
5
8
13
21
34
55
在这个例子中,创建了一个Fibonacci
迭代器对象,并使用next
函数逐个访问它的元素。由于Fibonacci
迭代器是无限的,因此可以使用range
函数控制循环的次数。