2015-01-05 5 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) 

내가 가진 필요한 출력을하지만, 나도 몰라 어떻게 C로 그것을 목록에 반전하십시오. 내가 가진 출력은 다음과 같습니다

['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