Генератор, это функция которая возвращает набор элементов, но не массивом за раз, а по одному элементу при каждом обращении.
Это позволяет не выделять память сразу для всего массива, а резервировать только для текущего элемента.
Реализуется это заменой return на yield . В момент вызова yield происходит выход из функции, но состояние не изменяется и при следующей итерации работа будет продолжена