2016-06-27 6 views
0

혼합 된 유형의 튜플을 목록에 병합하려고합니다.혼합 유형의 튜플을 중첩 해제하려면 어떻게해야합니까?

a = (1, 2, 3, ['first', 'second']) 
def flatten(l): 
return flatten(l[0]) + (flatten(l[1:]) if len(l) > 1 else []) if type(l) is list else [l] 

>>> flatten(a) 
[(1, 2, 3, ['first', 'second'])] 
>>> flatten(flatten(a)) 
[(1, 2, 3, ['first', 'second'])] 
>>> [flatten(item) for item in a] 
[[1], [2], [3], ['first', 'second']] 

출력되어야한다 : 다음 함수는 원하는 출력을 생성하지 않는다

>>> [1, 2, 3, 'first', 'second'] 
+0

이 둘 중 하나 또는 http://stackoverflow.com/questions/406121/flattening-a-shallow-list-in-python –

+0

기존 questio 중 * none * 네 스팅 시퀀스를 병합하는 것과 관련된 ns가 도움이됩니까? 꽤 많이 있습니다 ... – jonrsharpe

+0

만약 입력이 튜플이라면'type (l) is list'가 분명히 올바르게 작동하지 않을 것입니다. 대신 isinstance (l, (list, tuple))를 체크하고 싶을 것입니다. –

답변

0
def flatten(l): 
    if isinstance(l, (list,tuple)): 
     if len(l) > 1: 
      return [l[0]] + flatten(l[1:]) 
     else: 
      return l[0] 
    else: 
     return [l] 

a = (1, 2, 3, ['first', 'second']) 

print(flatten(a)) 

[1, 2, 3 '첫번째', '제']