La fonction enumerate en Python

Article publié le vendredi 13 janvier 2023 et mis à jour le mercredi 3 avril 2024.

La fonction enumerate en Python

Découvrez les secrets de la fonction enumerate en Python qui permet de boucler si un itérable en obtenant sa position !

En Python, la fonction native enumerate() permet de parcourir un itérable tout en gardant un compte des itérations. Enumerate() renvoie un objet de type enumerate qui contient l’indice et l’élément parcouru. On peut transformer cet objet en list ou tuple pour pouvoir l’utiliser.

Explications vidéo en moins d’une minute :

Syntaxe de la fonction enumerate :

enumerate(iterable)
enumerate(iterable, start=0)

Paramètres :

  • iterable : un objet qui supporte l’itération
  • start (optionnel) : le chiffre par lequel on commence l’énumération, par défaut 0

Exemple :

lettres = ['a', 'b', 'c']

for position, lettre in enumerate(lettres):
  print(position, lettre)
0 a
1 b
2 c

💡 Vous voulez en apprendre plus sur les fonctions comme enumerate() ? J’ai écrit un article qui reprend toutes les fonctions natives en Python.

Pourquoi utiliser enumerate ?

On peut facilement boucler sur un itérable comme un objet de type list, tuple ou string avec une boucle for ... in ... en Python. Le seul problème d’utiliser cette syntaxe est qu’on n’a pas accès à l’indice de l’élément. C’est la que la fonction enumerate() devient utile.

lettres = ['a', 'b', 'c']

for lettre in lettres:
  # On n'a pas accès à la position de lettre dans lettres
  print(lettre)

On peut évidement créer un indice qu’on va incrémenter de 1 à chaque passage dans la boucle … mais c’est ce que enumerate() permet de faire sans devoir rajouter des lignes de code.

Comment utiliser enumerate sur une liste ?

La fonction enumerate() fonctionne sur les objets sur lesquels on peut itérer en Python. On peut donc utiliser la fonction sur des listes de cette manière :

ma_liste = ['comment', 'coder', '.com']

for position, mot in enumerate(ma_liste):
  print(f'{position} : {mot}')

Ce qui donne :

0 : comment
1 : coder
2 : .com

On peut aussi créer un objet qui contient les éléments et leurs position !

ma_liste = ['comment', 'coder', '.com']

print(tuple(enumerate(ma_liste)))

Ce qui renvoie :

((0, 'comment'), (1, 'coder'), (2, '.com'))

Comment utiliser enumerate sur un tuple ?

La fonction enumerate() fonctionne sur les objets sur lesquels on peut itérer en Python. On peut donc utiliser la fonction sur des tuples de cette manière :

mon_tuple = ('comment', 'coder', '.com')

for position, mot in enumerate(mon_tuple):
  print(f'{position} : {mot}')

Ce qui donne :

0 : comment
1 : coder
2 : .com

On peut aussi créer un objet qui contient les éléments et leurs position !

mon_tuple = ('comment', 'coder', '.com')

print(tuple(enumerate(mon_tuple)))

Ce qui renvoie :

((0, 'comment'), (1, 'coder'), (2, '.com'))

Comment utiliser enumerate sur une string ?

La fonction enumerate() fonctionne sur les objets sur lesquels on peut itérer en Python. On peut donc utiliser la fonction sur des chaînes de caractères (aussi appelées strings) de cette manière :

ma_string = 'abc'

for position, lettre in enumerate(ma_string):
  print(f'{position} : {lettre}')

Ce qui donne :

0 : a
1 : b
2 : c

On peut aussi créer un objet qui contient les éléments et leurs position !

ma_string = 'commentcoder.com'

print(tuple(enumerate(ma_string)))

Ce qui renvoie :

((0, 'c'), (1, 'o'), (2, 'm'), (3, 'm'), (4, 'e'), (5, 'n'), (6, 't'), (7, 'c'), (8, 'o'), (9, 'd'), (10, 'e'), (11, 'r'), (12, '.'), (13, 'c'), (14, 'o'), (15, 'm'))

Comment utiliser enumerate à partir d’une certaine position ?

Si vous vous rappelez bien, on a vu dans l’introduction de cet article qu’on pouvait passer un second paramètre à la fonction native enumerate() en python.

Ce second paramètre permet de définir la valeur du premier indice.

On a l’habitude de commencer à compter à 0 plutôt qu’à 1. Mais si on veut commencer à compter à partir de 1 (ou n’importe quel autre valeur) il suffit de mettre cette valeur en deuxième paramètre de enumerate().

Concrètement, si on veut commencer à compter à 1 plutôt qu’à 0, cela donne :


ma_string = 'abc'

print(tuple(enumerate(ma_string, 1)))

Ce qui donne :

1 : a
2 : b
3 : c

Aller plus loin en Python avec enumerate

Félicitations, vous connaissez maintenant un outil de plus pour coder proprement en Python !

N’hésitez pas à consulter les autres guides en Python :

La fonction range en Python

La fonction map en Python

Les boucles for en Python

Mettre à la puissance en Python

Les expressions conditionnelles en Python

Comment Coder

Je m'appelle Thomas. J'ai commencé à coder dans mon enfance. Depuis ma sortie de la première promo de l'École 42, j'ai développé des centaines d'applications et sites web. Sur ce blog, je vous donne les meilleurs conseils et astuces pour apprendre comment apprendre à coder efficacement.