题目:
def demo():
for i in range(4):
yield i g = demo() g1 = (i for i in g )
g2 = (i for i in g1) print(list(g1))
print(list(g2))
分析:
按照生成器表达式和生成器函数不取值不执行的做法
一直到10行list(g1) 找g1取值,
10行list()找7行g1取值
g1找5行g 取值
g找1行生成器函数取值 ,得到g = (0,1,2,3)
g1 = (0,1,2,3)
list(g1) == [0,1,2,3] 由于生成器只能取一次值,此时g1 = ()
11行执行的时候,g2找g1要值,g1为空,因此list(g2)==[]
结果:
[0, 1, 2, 3]
[]