标签:color img nbsp add 遍历 pen [] close 生成器
1 def demo(): # 生成器函数 2 for i in range(4): 3 yield i 4 5 g = demo() # 得到一个生成器,demo中的代码没有被执行 6 7 g1 = (i for i in g) # ()所以是生成器表达式,得到了一个生成器g1,生成器表达式的代码一句也没有被执行 8 g2 = (i for i in g1) # 生成器表达式,得到了一个生成器g2,生成器表达式的代码没有被执行 9 10 print(list(g1)) # [0, 1, 2, 3] # 此时使用数据类型强制转换的方式从生成器g1中取值,所以g1对应的生成器表达式开始执行,全部执行完毕,g1生成器没有东西了 11 print(list(g2)) # [] # 此时取值,g2对应的表达式开始执行,表达式中遍历g1生成器,但是g1生成器值已经取完了,所以这里为[] 12 13 # ------------------------------------------- 14 15 def add(n, i): 16 return n + i 17 18 def test(): 19 for i in range(4): 20 yield i 21 22 g = test() 23 24 for n in [1, 10]: 25 g = (add(n, i) for i in g) # 拆开看 26 27 print(list(g)) # [20, 21, 22, 23] 28 29 30 # n = 1 31 #g = (add(n, i) for i in test()) 32 33 # n = 2 34 # g = (add(n, i) for i in (add(n, i) for i in test())) 35 36 #list(g)
标签:color img nbsp add 遍历 pen [] close 生成器
原文地址:https://www.cnblogs.com/whylinux/p/9623488.html