Нашли ошибку?

Слишком глубоко для стека вызовов

СложнаяРеализацияГлава 3

#стек вызовов#стек#вложенные структурыid: ga-flatten-deep

Та же задача, что «Разгладить вложенный список», но вложенность доходит до 100 000 уровней. Рекурсивное решение упадёт с RecursionError: стек вызовов в Python ограничен примерно 1000 кадров. Напишите flatten_deep(items) без рекурсии — с собственным стеком, как в решении с «кучей коробок». Порядок элементов должен сохраниться.

Примеры

flatten_deep([1, [2, [3, [4]]], 5])   # [1, 2, 3, 4, 5]

deep = [0]
for i in range(1, 100_000):
    deep = [deep, i]
flatten_deep(deep)                     # [0, 1, 2, …, 99999]

Ограничения

Решение

def flatten_deep(items: list) -> list[int]:
    """Возвращает все числа из вложенного списка любой глубины, без рекурсии."""
    # ваш код
    raise NotImplementedError

Можно решать и в своём редакторе: «Скопировать с тестами» и запустите python3 flatten_deep.py — тесты те же, результат покажет ✓ / ✗ и итог.