Что важно знать
- Итератор —
__iter__и__next__; генератор создаёт его черезyield. - Генераторы ленивые и одноразовые.
itertools:islice,groupby,chain.
Протокол итерации, генераторы, yield from, comprehensions и ленивые вычисления.
__iter__ и __next__; генератор создаёт его через yield.itertools: islice, groupby, chain.Практика. Обработать файл на гигабайт генератором построчно с фильтрацией и агрегацией.
Практика. Построить конвейер обработки логов из генераторов с itertools.
[...] сразу строит весь список в памяти, (...) — ленивый генератор.
Генератор — не только источник значений: send(x) передаёт значение внутрь (оно становится результатом выражения yield), throw(exc) бросает исключение в точке yield, close()…
Генератор — функция с yield: отдаёт значения по одному и замирает между ними, сохраняя состояние.
Ленивые строительные блоки: chain (склеить), islice (срез итератора), groupby (группы подряд идущих — нужна предварительная сортировка), product/permutations/combinations…
Итерируемый объект умеет выдать итератор (__iter__), итератор выдаёт значения по одному (__next__).
На живом собеседовании sotto слышит вопрос интервьюера и показывает короткий ответ и план. Оставьте контакт — пришлём доступ и промокод.