Skip to content

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:

Solution

Voir la solution