Как итерировать по вложенные списки неопределенной глубины?

Есть допустим список [1, 2, [3, 4, 5, [6, 7],[8, [9, [10, 11], 12]]], 13, 14]],15]
есть список со вложенными списками неопределенной глубины, необходимо обойти каждый элемент и вывести в нужном порядке
1,
2,
3
...
15
необходима рекурсия или я даже не знаю
  • Вопрос задан
  • 112 просмотров
Решения вопроса 2
aRegius
@aRegius
Python Enthusiast
>>> x = [1, 2, [3, 4, 5, [6, 7], [8, [9, [10, 11], 12]], 13, 14], 15]
>>> from collections import Iterable
>>> def nested_to_flat(items):
	        for i in items:
		            if isinstance(i, Iterable):
			                yield from nested_to_flat(i)
		            else:
			                yield i
>>> list(nested_to_flat(x))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15]
Ответ написан
Комментировать
@ily_a_inykh
Студент, программист (Python, Java)
Я погуглил за вас, также могу еще добавить, что следует тут все-таки использовать генераторы, а не просто накопить результат, при больших объемах критично.

Пример из ответа:
def rec_for_sum(lst):
    if not lst:
        return 0
    count = 0
    for el in lst:
        if not isinstance(el, list):
            count += el
        else:
            count += rec_for_sum(el)
    return count
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы