KlauGreph
В данном случае, при вызове функции создается список со всеми элементами до завершения цикла или же они создаются при каждом последующем обращении к объекту генератора?
Да никакой список не создаётся. Генератор - это функция, которая запоминает внутренне состояние между вызовами. Это не имеет отношения ни к спискам, ни к итерируемым объектам. Генераторы
можно использовать, для создания объектов, по которым можно ходить циклом, но суть их не в этом.
Сначала вы создаете объект генератор. Все локальные переменные функции становятся атрибутами этого объекта, таким образом он хранит состояние.
Затем вы вызываете next.
Генератор работает, пока не встретит yield и сохраняет точку кода в которой это произошло. Потом происходит возврат из функции. А на следующем вызове next генератор начинает работу с сохраненного на предудущем этапе места.