2016-06-27 10 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

*既存のクエストの* none *ネストされたシーケンスを平坦化することについてのnsはあなたを助けますか?かなりの数があります... – jonrsharpe

+0

入力がタプルの場合、明らかに型(l)がリストである場合、正しく動作しません。代わりに '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、 '第一'、 '第2']

関連する問題