笔记内容参考了菜鸟教程
地址:https://www.runoob.com/python3/python3-iterator-generator.html
迭代是访问集合元素的一种方式。
迭代器是一个可以记住遍历的位置的对象。
迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
迭代器有两个基本的方法:iter() 和 next()。
实例
#!/usr/bin/env python3
class MyNumbers: def __iter__(self): self.a = 1 return self def __next__(self): if self.a <= 20: x = self.a self.a += 1 return x else: raise StopIteration myclass = MyNumbers() myiter = iter(myclass) for x in myiter: print(x)
执行结果:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
生成器(generator)
跟普通函数不同的是,生成器是一个返回迭代器的函数,只能用于迭代操作,更简单点理解生成器就是一个迭代器。
在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值, 并在下一次执行 next() 方法时从当前位置继续运行。
斐波那契数列实例:
#!/usr/bin/env python3 import sys def fibonacci(n): a,b,counter=1,1,0 while True: if(counter>n): return yield a a,b=b,a+b counter+=1 f=fibonacci(10) while True: try: print(next(f),end=" ") except StopIteration: sys.exit()
执行结果:
1 1 2 3 5 8 13 21 34 55 89