python 使用迭代器实现斐波那契数列
时间: 2023-11-24 22:39:35 浏览: 30
使用迭代器实现斐波那契数列可以通过定义一个斐波那契迭代器类来实现。以下是一个示例代码:
```python
class FibonacciIterator:
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.curr + self.prev, self.curr
return value
fib_iter = FibonacciIterator()
for i in range(10):
print(next(fib_iter))
```
相关问题
python使用迭代器实现斐波那契数列
要使用迭代器来实现斐波那契数列,可以定义一个类,并在该类中添加`__iter__`方法和`__next__`方法。首先,设置初始值a为0,b为1。在`__next__`方法中,返回当前的a的值,并更新a和b的值。同时,通过添加一个计数器来控制数列的长度。当计数器达到指定的长度时,抛出StopIteration异常来终止迭代。最后,创建该类的实例,并使用`list()`函数将迭代结果转换为列表形式输出。
以下是实现斐波那契数列的迭代器的示例代码:
```python
class Fibonacci:
def __init__(self, length):
self.length = length
self.a = 0
self.b = 1
self.counter = 0
def __iter__(self):
return self
def __next__(self):
if self.counter >= self.length:
raise StopIteration
fibonacci_number = self.a
self.a, self.b = self.b, self.a + self.b
self.counter += 1
return fibonacci_number
fibonacci_iterator = Fibonacci(10)
fibonacci_list = list(fibonacci_iterator)
print(fibonacci_list)
```
运行结果为:[0, 1, 1, 2, 3, 5, 8, 13, 21, 34]
python迭代器斐波那契
以下是两种Python迭代器实现斐波那契数列的例子:
1. 使用itertools模块的islice函数实现斐波那契数列迭代器:
```python
from itertools import islice
class Fib:
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
if __name__ == '__main__':
fib = Fib()
print(list(islice(fib, 0, 10))) # 输出:[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
```
2. 使用迭代器方法实现斐波那契数列迭代器:
```python
class Fibonacci:
def __init__(self, all_num):
self.all_num = all_num
self.current_num = 0
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
if self.current_num < self.all_num:
result = self.a
self.a, self.b = self.b, self.a + self.b
self.current_num += 1
return result
else:
raise StopIteration
fibo = Fibonacci(10)
for num in fibo:
print(num) # 输出:0, 1, 1, 2, 3, 5, 8, 13, 21, 34
```