Table des matières

Comptage des éléments d'une liste

Exercice 4 du TP 1

On considère une séquence – list, tuple, str – L de longueur n = len(L) non nulle.

On voudrait préciser ses éléments et le nombre de représentants par élément. Par exemple pour L = [1, 0, 4, 2, 1, 0, 4, 1, 0], on a trois fois le 0, trois fois le 1, une fois le 2 et deux fois le 4.

Le mieux est d’utiliser un dictionnaire. Ici nous aurions le dictionnaire {0:3, 1:3, 2:1, 4:2}

Dans un dictionnaire, l'ordre des clés n'est pas garanti. On pourrait donc avoir à la place {2:1, 1:3, 0:3, 4:2}.

Question 1

Implémenter une fonction compte qui prend en argument une séquence et, avec un parcours séquentiel, renvoie le dictionnaire décrit ci-dessus. On testera la fonction bien sûr !

On pourra partir du cadre qui suit :

FONCTION compte
ENTRÉE: séquence (liste, chaîne...)
SORTIE: dictionnaire dont les clés sont les valeurs de la séquence
        et les valeurs sont les effectifs
DÉBUT
    initialiser un dictionnaire vide
    POUR CHAQUE item de la séquence FAIRE
        SI l'item est présent dans le dictionnaire ALORS
            ajouter 1 à l'effectif de cet item
        SINON
            ajouter cet item comme clé du dictionnaire avec la valeur 1
        FIN
    FIN
    renvoyer le dictionnaire
FIN

Question 2

Lorsque la séquence L est une séquence d’entiers naturels, au lieu d'un dictionnaire, on peut renvoyer un tableau T : Par exemple si l'entrée L contient 4 fois la valeur 12, alors on aura T[12] = 4.

FONCTION compte2
ENTRÉE: séquence L (liste ou tupple) d'entiers naturels
SORTIE: tableau T contenant les effectifs des valeurs
    soit p la valeur maximale de L (donc p entier naturel)
    initialiser T comme tableau de longueur p + 1
      et ne contenant que des 0
    POUR CHAQUE item de L FAIRE
        augmenter de 1 la valeur de T[item]
    FIN
    renvoyer T
FIN