题目:

 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]
[]

  

05-26 04:28