2017-09-26 3 views
0

L'extrait de code ci-dessous aplatit la liste imbriquée et les éléments de la nouvelle liste de manière récursive, mais n'a pas pu ajouter tous les éléments à la liste.Ajout d'éléments de liste imbriqués de façon récurrente à la nouvelle liste

Résultats escomptés: [1,2,4,5,6,7,5,8]

ma sortie: [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)) 

Répondre

5

Vous réinitialiser result dans chaque appel. Passez-le à l'intérieur de la fonction.

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)) 

sortie:

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

upvoted; Je suggère également d'utiliser 'isinstance' pour vérifier le type – Bahrom

+0

@Bahrom: Yeah a un sens. J'ai édité la réponse. – batMan

+0

Merci c'est travaillé .... :) – Ravi