HOWTO · Python

Compter les éléments dans List Python

Ce tutoriel montre comment compter les éléments dans une liste en Python

Sur cette page

« Compter les éléments d’une liste » peut désigner trois tâches différentes, et Python propose un outil direct pour chacune. Utilisez len() lorsque vous avez besoin du nombre total d’éléments, list.count() lorsque vous voulez connaître le nombre d’occurrences d’une seule valeur, et Counter du module collections lorsque vous voulez obtenir en une seule fois la fréquence de chaque valeur. Une boucle manuelle avec un dictionnaire produit le même résultat de fréquence et montre précisément comment le comptage fonctionne. Ce tutoriel présente chaque méthode avec des exemples exécutables afin que vous puissiez choisir celle qui correspond à votre tâche.

Obtenir le nombre total d’éléments avec len()

La fonction intégrée len() renvoie le nombre d’éléments de premier niveau dans une liste. Elle fonctionne avec tous les types d’éléments — nombres, chaînes, booléens ou même d’autres listes — car elle mesure la liste elle-même, et non les valeurs qu’elle contient.

Exécutez cet exemple :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

items = [10, "apple", 3.14, [1, 2, 3]]

print(len(items))
4

La liste contient quatre éléments : un entier, une chaîne, un nombre à virgule flottante et une liste imbriquée. len() indique 4, car la liste imbriquée [1, 2, 3] compte comme un seul élément au niveau externe. Si vous devez inclure les éléments stockés dans des listes imbriquées, aplatissez d’abord la structure ou additionnez séparément les longueurs des listes internes : len() ne regarde jamais au-delà du premier niveau.

Compter les occurrences d’une valeur avec list.count()

La méthode list.count() renvoie le nombre de fois qu’une valeur donnée apparaît dans la liste. Passez-lui la valeur recherchée et elle parcourt la liste pour vous :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

my_list = [1, 2, 3, 2, 1, 4, 2]

print(my_list.count(2))
print(my_list.count(9))
3
0

La valeur 2 apparaît trois fois, tandis que 9 n’apparaît jamais ; le second appel renvoie donc 0. list.count() fonctionne avec tout type d’élément que la liste peut contenir, y compris les chaînes et les données mixtes.

Gardez deux limites à l’esprit. Chaque appel répond à une question sur une seule valeur : compter trois valeurs différentes nécessite donc trois appels distincts. Pour obtenir une distribution complète des fréquences, utilisez plutôt Counter ou une boucle. De plus, sur une liste imbriquée, list.count() ne détecte que les éléments de premier niveau égaux à la valeur passée ; une valeur stockée à l’intérieur d’une liste imbriquée n’est pas vue, sauf si vous aplatissez d’abord la liste.

Compter chaque valeur avec Counter

La classe Counter du module collections construit une table de fréquences pour chaque valeur en une seule passe. Elle se comporte comme un dictionnaire qui associe chaque élément à son nombre d’occurrences :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

from collections import Counter

my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = Counter(my_list)

print(element_count)
print(element_count[2])
print(element_count[9])
Counter({2: 3, 1: 2, 3: 1, 4: 1})
3
0

L’indexation d’un objet Counter fonctionne comme celle d’un dictionnaire, avec une différence utile : la lecture d’une clé qui n’a jamais été comptée renvoie 0 au lieu de lever une erreur, donc element_count[9] affiche 0 sans problème.

Comme chaque valeur devient une clé de dictionnaire en interne, chaque élément doit être hachable. Les entiers, les chaînes et les tuples conviennent ; une liste imbriquée, non. Pour les listes d’éléments non hachables, convertissez d’abord les éléments sous une forme hachable ou comptez-les avec une autre approche.

Construire un dictionnaire de fréquences avec une boucle

Une simple boucle associée à un dictionnaire produit les mêmes fréquences tout en rendant le mécanisme visible. Initialisez un dictionnaire, puis incrémentez le compteur de chaque élément à mesure que vous parcourez la liste :

Le code et les libellés ou sorties affichés dans cette section restent en anglais.

my_list = [1, 2, 3, 2, 1, 4, 2]
element_count = {}

for element in my_list:
    if element in element_count:
        element_count[element] += 1
    else:
        element_count[element] = 1

print(element_count)
{1: 2, 2: 3, 3: 1, 4: 1}

Le résultat associe chaque valeur à son nombre d’occurrences : 2 apparaît trois fois, 1 deux fois, et 3 et 4 une fois chacun. Ce modèle effectue une seule passe dans la liste et vous donne un contrôle total : vous pouvez transformer chaque élément avant de le compter, ignorer certaines valeurs ou accumuler autre chose qu’un simple nombre. La même contrainte de hachabilité s’applique : chaque élément devient une clé de dictionnaire, donc les éléments non hachables comme les listes imbriquées doivent d’abord être convertis ou aplatis.

Pour choisir entre ces outils, adaptez la méthode à la question. Utilisez len() pour le nombre total d’éléments, list.count() pour une valeur, et Counter ou une boucle avec dictionnaire pour obtenir une table complète des fréquences.