2017-09-26 14 views
0

以下のコードスニペットでは、ネストされたリストと要素を再帰的にフラット化しますが、すべての要素をリストに追加することはできません。ネストされたリスト要素を新しいリストに再帰的に追加する

予想される出力:[1,2,4,5,6,7,5,8]

私の出力:[1,2,8]

def foo(l): 
    result = [] 
    for i in l: 
    if type(i)==list: 
     foo(i) 
    else: 
     result.append(i) 
return result 


input_list = [1,2,[4,5,[6,7],5],8] 

print (foo(input_list)) 

答えて

5

あなたは各コールでresultをリセットしています。それを関数の内部に渡します。

def foo(l,result): 
    for i in l: 
    if isinstance(i,list): 
    foo(i,result) 
    else: 
    result.append(i) 
    return result 


input_list = [1,2,[4,5,[6,7],5],8] 
result=[] 
print (foo(input_list,result)) 

出力:

[1, 2, 4, 5, 6, 7, 5, 8] 
+0

Upvoted。私はまた、 'isinstance'を使ってタイプを確認することをお勧めします。 – Bahrom

+0

@Bahrom:そうです。私は答えを編集しました。 – batMan

+0

ありがとうthats .... .... – Ravi

関連する問題