斐波那契数列
0,1,1,2,3,5,8,13,21,34 ….
前两个数相加,是第三个数的值
假如我需要一亿甚至十亿个数,如果使用range()
生成,使用一个list() 储存。我们使用迭代器设置好生成的方法,什么使用我们什么时候生成,这样可以节约内存
斐波那契数列案例
需要一个列表存储生成的数字
maxCount = 100000 # 需要生成的个数 count = 0 # 记录生成的次数 startOne = 0 # 斐波那契数列第一个起始值 startTwo = 1 # 斐波那契数列第二个起始值 fibonacciList = list() while count < maxCount: fibonacciList.append(startOne) startOne, startTwo = startTwo, startOne + startTwo count += 1 for num in fibonacciList: print(num)
加入迭代器
这个过程没有一个列表
class Fibonacci(object): def __init__(self, allNum): self.allNum = allNum # 需要生成的个数 self.count = 0 # 记录生成的次数 self.startOne = 0 # 斐波那契数列第一个起始值 self.startTwo = 1 # 斐波那契数列第二个起始值 def __iter__(self): return self def __next__(self): if self.count < self.allNum: # 记录斐波那契数 fiboNum = self.startOne # 计算斐波那契数 self.startOne , self.startTwo = self.startTwo , self.startOne + self.startTwo # 生成次数 self.count += 1 return fiboNum else: # 自定义一个异常 停止循环 raise StopIteration # 传入生成个数 fibo = Fibonacci(10000) # 一个对象 可以使用 for 循环 for num in fibo: print(num)
版权声明:《 Python 迭代器案例:生成斐波那契数列 》为明妃原创文章,转载请注明出处!
最后编辑:2019-11-9 10:11:10