迭代器
一个容器对象调用iter()就得到它的迭代器 , 调用next()迭代器就返回下一个值
string = "string"
it = iter(string)
print(next(it))
还可以使用for循环获取迭代器里面的值
string = "str"
it = iter(string)
for i in it:
print(i)
使用迭代器实现斐波那契数列
class Fib():
def __init__(self):
self.a = 0
self.b = 1
def __iter__(self):
return self
def __next__(self):
self.a, self.b = self.b, self.a + self.b
return self.a
fib = Fib()
for f in fib:
if f < 20:
print(f)
else:
break
生成器
协同程序就是运行的独立函数调用, 函数可以暂停或者挂起, 并在需要的时候从程序离开的地方继续或者重新开始
使用yield
def MyGen():
print("生成器被执行")
yield 1
yield 2
myG = MyGen()
print(next(myG)) # 生成器被执行
# 1