Поскольку вы исчерпали свой генераторный объект, и у вас ничего не осталось, чтобы он уступил вашей программе.
def hundred_numbers():
i=0
while i<100:
yield i
i=i+1
g=hundred_numbers()
[next(g) for _ in range(10)] # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[next(g) for _ in range(10)] # [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]
Видите шаблон? Теперь давайте возьмем остальное, т.е. 20-99
items = list(g) # Could have done [next(g) for _ in range(20,100)]
элементов теперь будут оставшимися значениями от 20 до 99. Так что же произойдет в следующий раз? Он не может войти в while
l oop, так что нечего сдавать. Это можно увидеть, если вы сделаете: list(g)
снова. Это приведет к пустому списку, так как захватывать нечего.