Код Middle Итераторы и генераторы обновлено

Конвейер обработки лога на генераторах

Условие

Напишите errors(lines, limit): из строк лога вида "LEVEL текст" верните первые limit текстов (без уровня, обрезанных по краям) строк уровня ERROR. Пустые строки и строки только из пробелов пропускайте. Решение должно быть ленивым: строки после limit-й ошибки не читаются. Проверка run(lines, limit) возвращает [результат, сколько строк было прочитано].

Примеры

run(["INFO ok", "ERROR db down", "ERROR disk", "INFO later"], 1) // [["db down"], 2]
run(["ERROR a", "ERROR b"], 5) // [["a", "b"], 2]
run([], 3) // [[], 0]

Как подойти

Подсказки: 2
  1. Цепочка генераторных выражений, в конце itertools.islice.
  2. Строка без текста после уровня даёт пустой текст.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.

Термины по теме