Compact¶
But de l'exercice¶
Ecrire une fonction compact qui supprime des dupliqués successifs.
Et voila le script de tests unitaires: test_compact.py
Exercice de base¶
Ecrire une fonction compact dans un fichier compact.py. Cette fonction doit prendre une liste en argument et retourner la liste composée des elements de la premiere sans dupliqués successifs
>>> compact([1, 1, 1, 1])
[1]
>>> compact([1, 2, 2, 3, 4, 2])
[1, 2, 3, 4, 2]
>>> compact([])
[]
Bonus numéro 1¶
Faire en sorte que la fonction puisse prendre n'importe quel iterable et pas seulement une liste. Cela signifie que l'on ne peut pas acceder au Nieme element avec son indice (ce n'est pas un indexable)
>>> compact(i**2 for i in [1, 1, 1, 2, 2])
[1, 4]
Bonus numéro 2¶
Faire en sorte que la fonction compact ne retourne plus une liste mais un iterable elle aussi. Cela permet de faire en sorte que compact accepte une quantite (virtuellement) illimité de données en entrée.
>>> c = compact(i**2 for i in [1, 1, 1, 2, 2])
>>> iter(c) is c
True
Aide¶
Si vraiment vous êtes bloqué.e.s, vous pouvez regarder ces articles:
- Looping with indexes in Python
- A solution for the base problem
- Using a sentinel value while looping
- How to create iterators
- An interesting solution