创建生成器有很多种方法,第一种只要把列表生成式的【】替换成()就可以了
如图:
创建f和g的区别在于外层的【】和(),f是一个列表,而g是一个生成器,我们可以直接打印出f中的每一个元素,而打印g中的元素则需要输入next()函数来获取生成器的下一个返回值
如果推算的算法比较复杂,用for循环无法实现时,还可以用函数实现,比如斐波拉契数列不能用列表生成器写出来,但是用函数打印出来就很简单
如图:
上面的函数和generator仅一步之遥。要把fib函数变成generator,只需要把print(b)改为yield b就可以了
如图: