这工作正常:
>>> def my_range(stop):
i = 0
while i < stop:
yield i
i += 1
>>> [k for k in my_range(10) if k < 5]
[0, 1, 2, 3, 4]
现在我修改我的生成器:
>>> def my_range():
i = 0
while True:
yield i
i += 1
>>> result = []
>>> for k in my_range():
if k < 5:
result.append(k)
else:
break
>>> print(result)
[0, 1, 2, 3, 4]
现在,为什么会陷入无限循环?即使我有 k < 5。生成器不应该只在调用 next 时迭代吗?
>>> [k for k in my_range() if k < 5]