• Какая разница между генераторами и массивами?

    Разница не в использовании памяти в принципе. А в использовании оперативной памяти, которой меньше.
    Рассмотрим кейс: у нас есть набор записей общим объемом 1ТиБ на винте, надо перебрать все и посчитать, скажем, среднее.
    Если у нас есть 1ТиБ свободной оперативы - мы можем целиком загрузить все туда и прямым доступом перебрать массив.
    Но у нас вряд ли есть столько оперативы. В таком случае мы можем считывать данные блоками размером с доступную оперативную память, выполнять действие, выгружать блок и загружать следующий.
    Генераторы же - синтаксический сахар для таких операций. Можно написать функцию-генератор, которая будет при каждом вызове возвращать следующий элемент. Но не хранить все их в оперативе. Отсюда и экономия памяти, но именно оперативной.
    Ответ написан