""" 迭代器应用 我们发现迭代器最核心的功能就是可以通过next()函数的调用来返回下一个数据值。如果每次返回的数据值不是在一个已有的数据集合 中读取的,而是通过程序按照一定的规律计算生成的,那么也就意味着可以不用再依赖一个已有的数据集合,也就是说不用再将所有要 迭代的数据都一次性缓存下来供后续依次读取,这样可以节省大量的存储(内存)空间。 举个例子,比如,数学中有个著名的斐波拉契数列(Fibonacci),数列中第一个数为0,第二个数为1,其后的每一个数都可由前 两个数相加得到: 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... 现在我们想要通过for...in...循环来遍历迭代斐波那契数列中的前n个数。那么这个斐波那契数列我们就可以用迭代器来实现, 每次迭代都通过数学计算来生成下一个数。 """ class Fibonacci(object): def __init__(self, all_num): self.all_num = all_num self.current_num = 0 self.a = 0 self.b = 1 # 有iter方法可以迭代 def __iter__(self): """如果想要让一个对象成为一个 可迭代对象,即可以使用for,那么必须使用__iter__方法""" return self def __next__(self): if self.current_num < self.all_num: ret = self.a self.a, self.b = self.b, self.a + self.b self.current_num += 1 return ret # 迭代结束,如果出现异常则不再迭代 抛出异常 else: raise StopIteration # 创建对象 fibo = Fibonacci(10) # 判断这个对象是否可以迭代 for num in fibo: print(num)
python 迭代器的应用斐波那契数列
最新推荐文章于 2024-05-30 02:36:44 发布