2017-07-07 13 views
0

再帰に関する質問があります。任意のネストされたリストを再帰で平滑化

def f6(lst): 
result = [] 
if type(lst[0]) == list: 
    return f6(lst[0]) 
else: 
    result.append(lst[0]) 

    if lst[1]: 
     return f6(lst[1]) 

    else: 
     return result 

多次元リスト入力から1次元リストを作成したいと考えています。私は["baa",[4,True,[10, 5],[1,2,['moo']]],['chirp']] を入れたときに は例えば、私は["baa",4,True,10, 5,1,2,'moo','chirp']

をしたいしかし、それはif lst[1]:

で私にindex out of rangeエラーを与える私はlst[1]として真/偽条件を使用することができませんか? 私はあなたの助けに感謝します。

答えて

1

リストに任意の数の要素とネストされたリストを任意の順序で含めることができる条件の世話はしていません。 resultsリストを初期化してから、各要素のループを実行して、その要素がリストのインスタンス(これはtype(x) == listよりもきれいです)かどうかを確認し、そうであれば、再帰呼び出しを行い、resultsリスト。それ以外の場合は、その要素をresultsに追加します。 f6(["baa",[4,True,[10, 5],[1,2,['moo']]],['chirp']])でこれを呼び出す

def f6(lst): 
    result = [] 
    for i in lst: 
     if not isinstance(i, list): 
      result.append(i) 
     else: 
      result.extend(f6(i)) 

    return result 

は生成します。

['baa', 4, True, 10, 5, 1, 2, 'moo', 'chirp'] 
+0

おかげでたくさん!私が間違っていたことを理解した。 –

+0

@WonKimこの回答が役に立った場合は、それを受け入れることを検討してください。それはコミュニティを助ける。ありがとう:) –

関連する問題