Adloun

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.