Python prend en charge de nombreux objets itérables: les listes, les tuples et les chaînes ne sont que quelques-uns. La boucle for de Python est suffisamment flexible pour gérer facilement ces objets. Cela vous évite notamment de vous occuper vous-même de l'index numérique de chaque entrée.

Mais parfois, vous voudrez travailler avec un index, pour compter ou filtrer les éléments d'une collection par exemple. Découvrez comment vous pouvez utiliser la fonction d'énumération Python pour itérer sur une séquence tout en gardant une trace à la fois de l'index et de l'élément.

Itérer sans énumérer()

Considérez la liste Python suivante.

my_fruits = ["pommes", "poires", "bananes"]

Supposons que vous souhaitiez suivre le nombre de chaque élément de la liste. Vous pourriez utiliser une boucle for avec un intervalle() fonctionner comme ça.

compter = 0

pour fruit dans gamme (len (my_fruits)):
print (count, my_fruits[count])
compter += 1

Bien que cela fonctionne, il présente quelques lacunes :

  • Vous devez garder une trace du décompte en dehors de la boucle.
  • Vous devez incrémenter le nombre à chaque itération.
  • Il faut calculer la longueur de la boucle.
  • plage (len()) ne fonctionne qu'avec des objets dénombrables et indexables.

Une meilleure solution existe: la fonction enumerate().

Comment enumerate() fonctionne en Python

Le Python énumérer() La fonction prend une collection de données et renvoie un objet d'énumération. L'objet d'énumération contient un compteur en tant que clé pour chaque élément contenu dans l'objet. La énumérer() la fonction le fait en attribuant à chaque élément un nombre. Ce décompte correspond au nombre d'itérations que la fonction a effectuées pour atteindre cette valeur.

Ce compteur facilite l'accès aux éléments de la collection ou même la mutation de la collection lorsque cela est possible.

Avec énumérer(), vous n'avez pas à suivre la longueur de la boucle ou le nombre d'itérations. Vous pouvez également éviter d'accéder explicitement à la valeur à l'aide de l'opérateur d'index, comme fruits[compter]. La fonction d'énumération gère automatiquement toutes ces fonctionnalités.

La syntaxe de Python enumerate()

Vous trouverez ci-dessous la syntaxe générale de la fonction enumerate().

énumérer (itérable, début=0)

enumerate() prend deux arguments :

  1. itérable: une collection de données ou une séquence sur laquelle Python peut itérer. Par exemple. une liste ou un tuple.
  2. start: l'index à partir duquel la fonction d'énumération doit commencer à compter.

Comment enumerate() est implémenté

Pour comprendre comment énumérer() fonctionne, voyons comment il est réellement mis en œuvre.

définitivementénumérer(séquence, début=0):
n = début

pour élément dans séquence:
rendement n, élément
n += 1

Cette fonction, que vous pouvez trouver dans le Documentation d'énumération Python, prend une séquence et un argument de départ dont la valeur par défaut est 0.

La fonction initialise ensuite la variable n à la variable de départ. Cela permet de suivre le nombre d'itérations.

Dans la boucle for qui suit pour chaque élément de la séquence,

  • rendement interrompt l'exécution de la boucle.
  • Il renvoie également le nombre actuel (n) et la valeur (elem).
  • Lorsque la boucle reprend, elle incrémente n.

La valeur de retour est un objet de paires clé-valeur.

Si vous deviez appeler le énumérer() fonction et passez-lui la liste des fruits, ce serait la valeur de sortie.

my_fruits = ["pommes", "poires", "bananes"]
enumerate_object = énumérer (my_fruits)
imprimer (liste (enumerate_object))

# sortie - [(0, 'pommes'), (1, 'poires'), (2, 'bananes')]

Énumérer avec un index de départ différent

Dans l'exemple ci-dessus, nous n'avons pas spécifié l'index de départ. L'exemple ci-dessous vous montre comment vous pouvez définir l'index de départ sur un nombre de votre choix.

Pour commencer à 10, procédez comme suit.

enumerate_object = énumérer (my_fruits, 10)
imprimer (liste (enumerate_object))

# sortie - [(10, 'pommes'), (11, 'poires'), (12, 'bananes')]

Python enumerate() Exemples

Voici quelques exemples montrant comment vous pouvez utiliser énumérer() en Python.

Énumérer une chaîne Python

Dans cet exemple, vous utiliserez enumerate pour récupérer la lettre à l'index 5 :

ma_chaîne = "makeuseof"

pour compte, valeur dans énumérer (my_string):
si compter == 5:
imprimer (évaluer)

# les sorties

Énumérer un Tuple Python

Vous pouvez aussi utiliser énumérer() itérer sur un Tuple Python. Dans cet exemple, le programme imprime un en-tête dans la première itération, avant d'afficher les éléments.

my_fruits_tuple = ("pommes", "poires", "bananes")

pour indice, valeur dans énumérer (my_fruits_tuple):
si (indice == 0):
print("Fruits :")

impression (valeur)

/*
Des fruits:
pommes
des poires
bananes
*/

Énumérer une liste Python

Dans l'exemple ci-dessous, vous utilisez enumerate pour décrémenter tous les nombres de la liste au-dessus de 10 par 2.

ma_liste_numéros = [10, 17, 15, 6]

pour indice, valeur dans énumérer (my_number_list):
si (valeur > 10):
ma_liste_de_numéros[index] -= 2

imprimer (my_number_list)

# sortie - [10, 15, 13, 6]

Utilisez énumérer pour compter vos itérables

Python inclut énumérer() en tant que fonction intégrée. Vous pouvez l'utiliser pour itérer et compter les éléments d'une collection itérable telle qu'une liste, un tuple ou une chaîne. Cela peut vous aider à garder une trace du véritable index de chaque élément, mais vous pouvez également spécifier votre propre index de départ. Utilisez-le comme alternative au intervalle() si vous travaillez avec des objets qui ne sont pas des objets dénombrables et indexables.