Résumé : Pour accéder à l'index des itérables comme les listes en Python, utilisez l'une des méthodes suivantes :
- Utilisez
enumerate()
fonction. - Utilisez une variable de compteur avec la boucle For/While.
- Utilisez une compréhension de liste.
- Utilisez le
NumPy
bibliothèque. - Utilisez le
itertools
module.
Présentation
Un index peut être considéré comme la position d'un élément dans un type de données ordonné (comme une liste ou un tuple). Une chaîne peut être considérée comme une liste de caractères, chaque caractère ayant un index.
- L'indexation commence de zéro à la longueur-1.
- Python prend également en charge l'indexation négative.
Visualisons l'indexation à l'aide d'un schéma.
À partir de l'exemple ci-dessus, il est assez clair que :
- La longueur de la chaîne est 23 tandis que l'indexation commence à 0 et se termine à 22.
- L'indexation négative commence à la fin de la chaîne par -1 et se termine au début de la chaîne (-23).
Maintenant que nous avons une idée des index, passons à notre question essentielle :
Problème : Donnez une liste; comment accéder à l'index de chaque élément de la liste par une boucle ou toute autre méthode ?
Exemple 1 : Considérez le programme ci-dessous qui contient une liste de nombres. Nous voulons extraire chaque numéro avec son index comme indiqué ci-dessous :
items = [100, 200, 300, 400, 500] for i in items: print('item #{} = {}'.format(???, i))
Résultat souhaité
item #0 = 100 item #1 = 200 item #2 = 300 item #3 = 400 item #4 = 500
Voyons maintenant les différentes manières de procéder :
Méthode 1 :Utilisation de la fonction enumerate()
Le moyen le plus efficace de trouver l'index des éléments dans une liste est d'utiliser une fonction Python intégrée appelée enumerate()
. Cette méthode accepte un itérable (comme une liste, un tuple), lui ajoute un compteur, puis le renvoie sous forme d'objet.
enumerate(iterable, start)
:Syntaxe pour le enumerate()
méthode.
Remarque : L'indexation commence à 0 en Python, vous devez donc définir un numéro de départ au cas où vous voudriez utiliser un numéro différent comme index de départ.
Regardons le programme suivant pour comprendre comment nous pouvons utiliser cette méthode pour trouver les index des éléments de la liste :
items = [100, 200, 300, 400, 500] for index, item in enumerate(items, start=1): print('item #{0} = {1}'.format(index, item))
Sortie :
item #1 = 100 item #2 = 200 item #3 = 300 item #4 = 400 item #5 = 500
Méthode 2 :Utiliser une variable de compteur et une boucle For
Vous pouvez créer une boucle for en utilisant une variable pour stocker l'index et accéder aux éléments de la liste en utilisant cette variable. Examinons le programme suivant pour comprendre comment cela fonctionne :
items = [100, 200, 300, 400, 500] for i in range(len(items)): print(f'item #{i + 1} = {items[i]}')
Sortie :
item #1 = 100 item #2 = 200 item #3 = 300 item #4 = 400 item #5 = 500
Méthode 3 :Utilisation d'une boucle While et d'une variable de compteur
Tout comme la boucle for, nous pouvons également utiliser une boucle while pour créer une variable de compteur pour contenir les index des éléments, puis accéder aux éléments de la liste à l'aide de cette variable. Examinons le programme suivant pour comprendre comment cela fonctionne :
items = [100, 200, 300, 400, 500] i = 0 while i <= len(items): print(f'item #{i + 1} = {items[i]}') i += 1
Sortie :
item #1 = 100 item #2 = 200 item #3 = 300 item #4 = 400 item #5 = 500
Méthode 4 :Utiliser une compréhension de liste
Jetons un coup d'œil au Python one-liner pour résoudre notre problème en utilisant une compréhension de liste :
items = [100, 200, 300, 400, 500] [print(f"item #{index + 1} = {items[index]}") for index, item in enumerate(items)]
Sortie :
item #1 = 100 item #2 = 200 item #3 = 300 item #4 = 400 item #5 = 500
Méthode 5 :Utiliser le module Itertools
Nous pouvons utiliser le count()
et zip()
fonctions du itertools
module pour trouver l'index de l'élément donné.
count()
est une fonction intégrée duitertools
module qui est utilisé pour créer un itérateur et produit des entiers consécutifs basés sur les valeurs d'attributs start et step données.zip()
est une autre fonction intégrée duitertools
module qui accepte un itérable comme argument qui peut être une liste, un tuple, un fichier, un dictionnaire, etc. Il combine les éléments de plusieurs itérateurs et les stocke dans des tuples.
Voyons maintenant comment nous pouvons appliquer le concept ci-dessus dans notre solution :
from itertools import count items = [100, 200, 300, 400, 500] for i in zip(count(start=1, step=1), items): print(i)
Sortie
(1100)
(2 200)
(3 300)
(4 400)
(5 500)
Méthode 6 :Utilisation de la bibliothèque NumPy
Une autre approche pour trouver des indices consiste à utiliser le numpy
bibliothèque. Vous vous demandez peut-être pourquoi utiliser une bibliothèque externe pour trouver l'index d'un élément dans une liste. Cela a-t-il même un sens? Oui. Vous ne trouverez pas cette méthode efficace dans le cas de scénarios simples, cependant, dans les situations où vous devez effectuer des opérations complexes à l'aide d'index, numpy
est la solution la plus efficace dans de tels scénarios. NumPy est presque 50 fois plus rapide que les listes traditionnelles et c'est pourquoi il a besoin d'une mention honorable dans la liste de nos solutions suggérées.
Pour comprendre la puissance de NumPy
Prenons un exemple différent où vous devez trouver l'index d'un nombre donné dans une collection. Veuillez suivre le code ci-dessous :
import numpy as np items = [500, 200, 500, 400, 500] value = 500 # numpy.where() function returns the indices of elements in an input array where the given condition is satisfied. index = np.where(np.array(items) == value)[0] print(f'item {value} is located at INDEX: {index}')
Sortie :
item 500 is located at INDEX: [0 2 4]
On pourrait soutenir que la solution ci-dessus pourrait également être atteinte par d'autres méthodes. Cependant, l'efficacité et la facilité avec lesquelles NumPy résout notre problème en font une bonne option.
Conclusion
Ainsi, dans cet article, les solutions décrites ci-dessus incluaient les méthodes suivantes :
- Utilisation de la fonction enumerate().
- Utiliser une variable de compteur avec la boucle For/While.
- Utiliser une compréhension de liste.
- Utiliser
itertools
module. - Utiliser le
NumPy
bibliothèque.
J'espère qu'après avoir lu cet article, vous pourrez trouver des indices d'éléments dans des listes ou des tableaux sans aucun problème. Veuillez vous abonner et rester à l'écoute pour des articles plus intéressants.