1
glasslion 2017-07-31 22:01:55 +08:00
生成器表达式是惰性的,你不去遍历它, next(i) 就不会被实际执行, 就不会触发 StopIteration, 结束循环
|
2
Pysensor 2017-07-31 22:04:16 +08:00
拙见。。。其实不管你的 res 是不是改成生成器表达式,你给 res 赋任意一个值,都会是无限循环的,这就差不多是 while True: print(res)
|
3
wisej 2017-07-31 22:08:09 +08:00
res = [next(i) for i in iters] 会执行 next(i).
然而,当你将方括号变成圆括号后,python 解释器执行到语句 1 的时候,只会生成一个 generator object (里面包含了生成器表达式所在行等信息) ,同时 res 指向它。但是,这个 generator 并不会被执行,也就意味着无论是 iter 还是 i 都不会触发 StopIteration.最后的结果就是无限循环了 |
4
saximi OP 感谢大家指点!
|