用python实现斐波那契数列的迭代器(实现iter()和next()方法)和生成器(使用yield关键字)
时间: 2024-10-25 10:17:48 浏览: 41
在Python中,我们可以使用迭代器(Iterator)和生成器(Generator)来实现斐波那契数列。以下是两种方式的具体实现:
1. 使用迭代器(Iterator):
```python
class FibonacciIterator:
def __init__(self, n=0):
self.current = 0
self.previous = 1
self.n = n
def __iter__(self):
return self
def __next__(self):
if self.n <= 0:
raise StopIteration
elif self.n == 1:
self.current, self.previous = 1, 0
else:
self.current, self.previous = self.previous + self.current, self.current
self.n -= 1
return self.current
# 使用示例
fib_iterator = FibonacciIterator(10)
for num in fib_iterator:
print(num)
```
2. 使用生成器(Generator):
```python
def fibonacci(n):
a, b = 0, 1
for _ in range(n):
yield a
a, b = b, a + b
# 使用示例
for num in fibonacci(10):
print(num)
```
在这两个例子中,迭代器的方式更适合逐个返回斐波那契数列的值,而生成器则更简洁,它会在每次调用`next()`时动态计算下一个数,适合一次性生成整个序列。
阅读全文