En Python, en utilisant l'instruction for, les données peuvent être extraites une par une à partir de diverses collections de données. Cependant, vous souhaitez parfois récupérer l'index de ces données ainsi que les données.
Cette fois, je vais vous expliquer comment obtenir l'index des données avec l'instruction for et son application.
Table des matières [Masquer] 1 [Obtenir l'index avec l'instruction for en utilisant la liste](## Obtenir l'index avec l'instruction for en utilisant la liste) 1.1 [Méthode utilisant la plage](Méthode utilisant la plage ###) 1.2 [Méthode utilisant enumerate](Méthode utilisant ### enumerate) 2 [Boucle deux listes en parallèle](## Boucle deux listes en parallèle) 2.1 [Utiliser la plage](Utiliser la plage ###) 2.2 [Use enumerate](### Use enumerate) 2.3 [Utiliser la fonction zip](Utiliser la fonction ### zip)
Parmi les instructions for, en particulier celles qui utilisent des listes et des taples, vous souhaitez parfois utiliser cet index. Par conséquent, l'instruction Python for fournit un moyen de récupérer l'index de l'élément récupéré.
Dans l'instruction for de Python, il est courant d'utiliser la fonction range pour effectuer une boucle, mais vous pouvez utiliser cette plage pour récupérer l'index.
list = ['python', 'Hello', 'world']
for i in range(len(list)):
list_item = list[i]
print('{0}:{1}'.format(i, list_item))
Au lieu de récupérer des données directement à partir de la liste, la fonction len () récupère la longueur de la liste et effectue une boucle de ce montant. Ensuite, la valeur de la variable 1 à ce moment-là devient l'index, de sorte que l'élément index-ième est retiré dans l'instruction for, stocké dans une autre variable et finalement sorti ensemble.
Vous pouvez également récupérer correctement l'index avec cette méthode. Cependant, le code sera un peu difficile à lire. De plus, il est étrange de ne pas boucler directement dans la liste même si l'essentiel est d'extraire les éléments de la liste.
list = ['python', 'Hello', 'world']
for i in range(len(list)):
list_item = list[i]
print('{0}:{1}'.format(i, list_item))
Résultat d'exécution
0:python 1:Hello 2:world
Auparavant, j'utilisais range pour récupérer l'index, mais le code était très difficile à lire. Donc Python fournit une fonction pour récupérer l'index avec du code propre. C'est énumérer.
pour la variable 1,Variable 2 dans l'énumération(liste):
print('{0}:{1}'.format(Variable 1,Variable 2))
Vous pouvez utiliser la fonction enumerate pour récupérer l'index de l'élément et l'élément en même temps. L'index est stocké dans la variable 1 et l'élément est stocké dans la variable 2. Par rapport à la méthode utilisant range, le nombre de lignes est plus petit et plus propre, et le code est très facile à lire. Pour récupérer l'index, utilisez autant que possible la fonction énumération.
list = ['python', 'Hello', 'world']
for i, j in enumerate(list):
print('{0}:{1}'.format(i, j))
Résultat d'exécution
0:python 1:Hello 2:world
Vous pouvez utiliser range pour faire une boucle entre deux listes, comme vous le feriez avec une instruction for normale.
pour variable en rage(len(Liste 1)):
print('{0}, {1}'.format(Liste 1[variable],Liste 2[variable]))
La boucle est tournée de la longueur du Listing 1 extraite par la fonction len. Ensuite, puisque la valeur de la 'variable' à ce moment-là est équivalente à l'index, vous pouvez boucler les deux listes en extrayant la variable e élément de chaque liste.
list1 = ['python', 'Hello', 'world']
list2 = ['Python', 'programming', 'beginner']
for i in range(len(list1)):
print('list1:{0}, list2{1}'.format(list1[i], list2[i]))
Résultat d'exécution
list1:python, list2Python list1:Hello, list2programming list1:world, list2beginner
J'ai pu parcourir les deux listes et afficher les deux éléments. Cependant, avec la méthode utilisant range, le code est toujours difficile à lire.
Ensuite, la méthode possible consiste à utiliser l'énumération mentionnée précédemment.
pour la variable 1,Variable 2 dans l'énumération(Liste 1):
print(‘{0}, {1}'.format(Variable 2,Liste 2[Variable 1]))
Avec la fonction enumerate, vous pouvez récupérer l'index de l'élément récupéré. En l'utilisant, les éléments du Listing 2 sont extraits. Le code est plus court et semble meilleur que l'utilisation de range, mais il est difficile à voir car il utilise deux variables séparément, et cela semble déroutant.
list1 = ['python', 'Hello', 'world']
list2 = ['Python', 'programming', 'beginner']
for i,j in enumerate(list1):
print('list1:{0}, list2:{1}'.format(j, list2[i]))
Résultat d'exécution
list1:python, list2:Python list1:Hello, list2:programming list1:world, list2:beginner
La méthode de bouclage entre deux listes en utilisant range et enumerate est non seulement difficile à voir, mais présente également un autre problème. Cela peut provoquer une erreur si les deux listes sont de longueurs différentes.
list1 = ['python', 'Hello', 'world', 'test']
list2 = ['Python', 'programming', 'beginner']
for i,j in enumerate(list1):
print('list1:{0}, list2:{1}'.format(j, list2[i]))
Résultat d'exécution
print(‘list1:{0}, list2:{1}’.format(j, list2[i])) IndexError: list index out of range
Dans cet exemple, list1 a une longueur de 4, donc la boucle est répétée 4 fois. Cependant, puisque list2 a une longueur de 3, cela entraînera une erreur car l'élément ne peut pas être référencé la 4ème fois dans la boucle. En d'autres termes, lorsque vous utilisez range et enumerate, vous devez tenir compte de la longueur de la liste, ce qui est un peu ennuyeux.
Pour résoudre le problème de la lisibilité du code et de la longueur de la liste, c'est une bonne idée d'utiliser la fonction zip lors de l'exécution des deux boucles.
pour la variable 1,Variable 2 en zip(Liste 1,Liste 2):
print('{0}, {1}'.format(Variable 1,Variable 2))
Vous pouvez utiliser la fonction zip pour extraire chaque élément de deux ou plusieurs listes et stocker les éléments de la liste 1 dans la variable 1 et les éléments de la liste 2 dans la variable 2. Le code est très propre et facile à voir. De plus, si les longueurs de liste sont différentes, elle s'ajustera automatiquement à la longueur de liste la plus courte, vous n'avez donc pas à penser à la longueur de la liste une par une.
list1 = ['python', 'Hello', 'world', 'test']
list2 = ['Python', 'programming', 'beginner']
for i, j in zip(list1, list2):
print('{0}, {1}'.format(i,j))
Résultat d'exécution
python, Python Hello, programming world, beginner
Site de référence [Introduction à Python] Comment obtenir l'index des données avec l'instruction for
Recommended Posts