@Arbil

Можно ли одной функцией 'распаковать' все вложенные списки?

Всем привет!
Есть ли в Python какая-нибудь функция которая может 'распаковать' все вложенные списки ?
Вроде:
Main_List = [[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]

Main_List.func() #[2, 4, 5, 6, 6, 6, 6, 6, 7]
  • Вопрос задан
  • 191 просмотр
Решения вопроса 2
fox_12
@fox_12 Куратор тега Python
Расставляю биты, управляю заряженными частицами
def flatten(li):
    return sum(([x] if not isinstance(x, list) else flatten(x) for x in li), [])


>>> flatten([[[2]], [4, [5, 6, [6], 6, 6, 6], 7]])
[2, 4, 5, 6, 6, 6, 6, 6, 7]
Ответ написан
adugin
@adugin Куратор тега Python
import re

def flatten(lst):
    return [int(x) for x in re.findall('\d+', str(lst))]

Также здесь: Как распаковать list of lists н-ое кол-во раз?
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
@anerev
Это всё гуглится за 5 секунд
Main_List = [[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]


def flatten(lst):
    while lst:
        sublist = lst.pop(0)
        if isinstance(sublist, list):
            lst = sublist + lst
        else:
            yield sublist

print(list(flatten(Main_List)))
Ответ написан
@Drill
Если во всех вложенных списках находятся данные одного типа, например, целые числа, то можно обойтись без рекурсии:
Main_List = [[[2]], [4, [5, 6, [6], 6, 6, 6], 7]]

def flat_list(nested):
     return [int(i) for i in str(nested).replace('[', '').replace(']', '').split(', ') if i]

print(flat_list(Main_List))
[2, 4, 5, 6, 6, 6, 6, 6, 7]
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы
Level Travel Москва
До 160 000 ₽
Big Data Solutions Санкт-Петербург
от 100 000 до 220 000 ₽
19 февр. 2020, в 02:24
500 руб./за проект
18 февр. 2020, в 23:53
8000 руб./за проект