生成器
- 优点节约空间 ,和时间资源 ,只有再调用的时候才会占用时间和空间
- 生成器随用随生成,用完即释放,有高效性
# 生成器 generator
# 创建一个generator的方式:
# 用列表生成式的方式 把[] 改成 ()就可以创建一个generator
def printg(g,ends = " "):
#for遍历输出生成器
for i in g:
print(i ,end = ends)
g = (x*x for x in range(1,10))
print(g)
# next 类似于生成器的单步执行,
print(next(g))
# 貌似可以用for 循环调用next()去遍历呢,但是这可不是正确的打开方式哦
# 正确的打开方式的直接for遍历,因为generator是 可迭代的对象
for i in g:
print(i ,end = " ")
# 用函数创建一个生成器,(用于复杂一点的数据)
def fib(max):
a,b = 0,1
while a<max:
yield a
a,b = b,a+b
return "OK"
g = fib(100000)
printg(g)
# 打印杨辉三角
def triangles():
a = [1]
i = 1
while i<=10 :
yield a
# 等式右边的a是右边的上一个a
a = [1] + [a[j-1]+a[j] for j in range(1,len(a))] +[1]
i+=1
g = triangles()
printg(g,"\n")