0
這工作得很好:生成器陷入列表理解中的無限循環?
>>> 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.生成器是否應該只在下一次被調用時進行迭代?
>>> [k for k in my_range() if k < 5]
明白了,非常感謝。 – jurgenreza
有沒有辦法讓'break'並讓列表理解停止從發生器獲取值?最好不使用'itertools' – Michael
@Michael爲什麼不使用'itertools'? –