一、使用迭代器实现斐波拉契数列
class Fib(object):
"""
迭代器生成斐波拉契数列
:param max_value:最大范围
:returns :所有的斐波拉契数列
"""
def __init__(self, max_value):
self.cur = 0
self.next = 1
self.max_value = max_value
def __iter__(self):
return self
def __next__(self):
if self.cur <= self.max_value:
result = self.cur
self.cur, self.next = self.next, self.cur+self.next
return result
else:
raise StopIteration()
二、使用生成器
def Fib(max_value):
"""
生成器生成斐波拉契数列
:param max_value:最大范围
:returns :所有的斐波拉契数列
"""
cur_value = 0
next_value = 1
while cur_value <= max_value:
yield cur_value
cur_value, next_value = next_value, cur_value + next_value
使用迭代器和生成器的好处是节省内存、惰性求值