Код Middle Итераторы и генераторы спрашивают часто обновлено
Рекурсивно развернуть вложенные списки
Условие
Напишите генератор flatten(obj): выдаёт все не-списковые элементы из произвольно вложенных списков по порядку. Строки считаются атомарными. Проверка: run(obj) возвращает list(flatten(obj)).
Примеры
run([1, [2, [3, [4]]], 5]) // [1, 2, 3, 4, 5]
run([]) // []
run([[[[]]]]) // []
Как подойти
Подсказки: 1
isinstance(x, list)иyield from.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.
Предыдущий вопрос
Разбить последовательность на пачки
Следующий вопрос
Конвейер обработки лога на генераторах
Термины по теме
Ещё по теме «Итераторы и генераторы»
- Когда выполняется тело генератора
- Свой итерируемый класс, который можно обходить много раз
- Когда выполняется finally в недочитанном генераторе
- Полезные функции itertools
- Ленивые вычисления
- Протокол итерации
- Генераторное выражение против list comprehension
- itertools.groupby на несортированных данных