Problème — Aplatir une liste imbriquée
Application directe du cours · niveau 2 · NSI (terminale), chapitre 5 — La récursivité
Énoncé
Problème — Aplatir une liste imbriquée.
Une liste peut contenir des entiers ou d'autres listes, elles-mêmes imbriquées à une profondeur quelconque. Écrire une fonction récursive aplatir(liste) qui renvoie une liste plate contenant tous les entiers, dans l'ordre.
Corrigé
On parcourt les éléments ; si un élément est une liste, on l'aplatit récursivement et on concatène le résultat ; sinon on l'ajoute directement. La récursivité suit ici la structure imbriquée des données.
def aplatir(liste):
resultat = []
for element in liste:
if isinstance(element, list):
resultat = resultat + aplatir(element)
else:
resultat.append(element)
return resultat
print(aplatir([1, [2, [3, 4], 5], [6]])) # affiche [1, 2, 3, 4, 5, 6]
La profondeur de récursion correspond ici à la profondeur d'imbrication de la liste, et non au nombre total d'éléments.
Les autres exercices de ce chapitre Le cours du chapitre
Un blocage sur cet exercice ? Le tuteur d'Adloun guide par questions, sans donner la réponse.