Adloun

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

Faire l'exercice suivant avec le tuteur

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.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant avec le tuteur →