Что важно знать
- Итератор —
__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 from делегирует подгенератору: пробрасывает значения, send и throw, а…
Полный разборГенератор — функция с yield: отдаёт значения по одному и замирает между ними, сохраняя состояние.
Полный разборЛенивые строительные блоки: chain (склеить), islice (срез итератора), groupby (группы подряд идущих — нужна предварительная сортировка), product/permutations/combinations, accumulate (накопительные суммы), batched (3.12, пачки по n), tee, zip_longest…
Полный разборИтерируемый объект умеет выдать итератор (__iter__), итератор выдаёт значения по одному (__next__).
Полный разборseq[start:stop:step] — новая последовательность с start включительно до stop не включая.
Полный разборПротокол итерации, генераторы и генераторные выражения, срезы, send и yield from, ленивые инструменты itertools.
После собеседования sotto разбирает разговор: оценка, каждый вопрос — хорошо, частично или слабо, чего не хватило в ответе и над чем поработать к следующему разу. Первые 30 минут бесплатно.