2015-01-05 2 views
0

у меня есть вложенный список, как это:питон - как преобразовать вложенный список в список всех отдельных подсписков

l = [['A', ['A', 'B', ['A', 'B', 'C'], ['A', 'B', 'D']], ['A', 'D', ['A', 'D', 'A']], ['A', 'C', ['A', 'C', 'B'], ['A', 'C', 'A']], ['A', 'A', ['A', 'A', 'D']]]] 

Я хочу, чтобы разделить его на список всех отдельных списков, как это:

k = [['A'], ['A', 'B'], ['A', 'B', 'C'], ['A', 'B', 'D'], ['A', 'D'], ['A', 'D', 'A'], ['A', 'C'], ['A', 'C', 'B'], ['A', 'C', 'A'], ['A', 'A'], ['A', 'A', 'D']] 

Я попробовал это, создавая следующую функцию:

def un_nest(l): 
    k=[] 
    for item in l: 
     if type(item) is list: 
      un_nest(item) 
     else: 
      k+=[item] 
    print(k) 

я получил необходимый выходной, но я не знаю, как с переверните его в список. выход я получил это:

['A', 'B', 'C'] 
['A', 'B', 'D'] 
['A', 'B'] 
['A', 'D', 'A'] 
['A', 'D'] 
['A', 'C', 'B'] 
['A', 'C', 'A'] 
['A', 'C'] 
['A', 'A', 'D'] 
['A', 'A'] 
['A'] 
[] 

это выход в оболочке, (я знаю, что это из-за функции печати), но я понятия не имею, как получить список от этого. Поскольку мне нужно сделать некоторую операцию, необходимо список для окончательного вывода. Я использую Python 3.4.1 Любой подсказку поможет. Заранее спасибо

Редактировать: Его больше похоже на то, что я хочу, отделить все строки и под-список от 'l', до другого списка.

+0

Так что вы хотите: [[ 'A', 'B', 'C'], [ 'A', 'B', 'D'], и т. д.] –

+0

Да, точно. Результат, который был напечатан с помощью функции, я хочу, чтобы это было как список. – AmeyA

+0

нет списка '['A']' на вашем входе. –

ответ

8

Вы можете вернуть список в качестве результата на текущем уровне вложенности и объединить вложенные результаты, используя расширение.

l = [['A', ['A', 'B', ['A', 'B', 'C'], ['A', 'B', 'D']], ['A', 'D', ['A', 'D', 'A']], ['A', 'C', ['A', 'C', 'B'], ['A', 'C', 'A']], ['A', 'A', ['A', 'A', 'D']]]] 

def un_nest(l): 
    r = [] 
    k = [] 
    for item in l: 
     if type(item) is list: 
      r.extend(un_nest(item)) 
     else: 
      k.append(item) 
    if k: 
     r.insert(0, k) 
    return r 

print(un_nest(l)) 

выходы:

[['A'], ['A', 'B'], ['A', 'B', 'C'], ['A', 'B', 'D'], ['A', 'D'], ['A', 'D', 'A'], ['A', 'C'], ['A', 'C', 'B'], ['A', 'C', 'A'], ['A', 'A'], ['A', 'A', 'D']] 
+0

Большое спасибо, это именно то, что я хотел. – AmeyA

Смежные вопросы