NSI (terminale) · Chapitre 5 · Application directe du cours
Problème — Aplatir une liste imbriquée
La récursivité · niveau 2
É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.
100 % gratuit
Essaie le suivant avec le tuteur
- L'exercice suivant avec le tuteur, sans compte : il guide pas à pas, sans donner la réponse
- 8 autres exercices corrigés dans ce chapitre
- Les 2 QCM du chapitre, le premier sans compte
- Le podcast et la vidéo du chapitre : 2 minutes d'écoute sans compte
Sans compte : le cours, le premier QCM, 2 minutes de podcast et de vidéo et un exercice avec le tuteur. Pour tout le reste : inscription gratuite en 30 secondes, sans carte bancaire.