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).
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 :
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.
La fonction isinstance() permet de tester le type d’un objet.
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.