Вопрос №164
Q: Чем отличаются генераторы от итераторов?
A: Итератор — механизм поэлементного обхода данных, а генератор позволяет отложено создавать результат при итерации. Генератор может создавать результат на основе алгоритма или брать элементы из источника данных и изменять их. Получаем разделение ответственности: клиенты имеют возможность работать с разными коллекциями унифицированным образом, а коллекции становятся проще за счет того, что делегируют перебор элементов другой сущности. Любой генератор в Python - итератор, но не наоборот. Примеры генераторов: range() (генерирует арифметическую прогрессию), enumerate() (генерирует двухэлементные кортежи: индекс + элемент итерируемого объекта)
Post #601
150