Aplatir une liste

Contexte

Il peut arriver que l’on souhaite extraire dans une liste simple (profondeur 1) les données stockées dans une architecture de listes arbitrairement imbriquées (profondeur n). A titre d’exemple, la liste ci dessous a une profondeur de 3 :

list_to_flatten = [1, [2, 3], [4, [5, 6]], 7, [], [8, 9]]

On souhaite obtenir :

flattened_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]

On emploie le terme “aplatir” la liste (flatten en anglais).

Environnement de travail

Pour cet exercice, vous devez créer un fichier ex06-flatten-list.py.

Selon la convention de structuration des modules, ce fichier sera structuré en quatre parties :

  1. Imports et définition des variables globales ;
  2. Définition des fonctions secondaires ;
  3. Définition de la fonction principale ;
  4. Appel protégé de la fonction principale.

Objectifs

L’objectif est d’écrire une fonction récursive flatten_list() :

On portera attention :

Vérifier le bon fonctionnement de la fonction en effectuant un appel depuis main() et en affichant la valeur de retour.

Ecrire la docstring.

Informations complémentaires

La fonction isinstance() permet de tester le type d’un objet.

Doctests

Une fois la fonction opérationnelle pour quelques arguments, ET SEULEMENT DANS CE CAS, écrire quelques doctests et les lancer dans un terminal:

$ python -m doctest ex06-flatten-list.py -v

La totalité des doctests doivent réussir.