En Python la boucle « for » est généralement utilisée sur des itérables (listes, dictionnaires, chaine de caractères…). Cette boucle est très pratique pour parcourir tous les éléments qui composent cet itérable. Cependant il peut être très utile lorsque l’on veut récupérer la valeur d’un élément et son index par exemple. Vous pouvez utiliser la fonction « enumerate() ».
Prenons l’exemple ci-dessous :
On observe ici que grace à la boucle « for » on peut afficher tous les éléments de la liste « list ».
Mais maintenant mettons que nous souhaitons faire apparaitre la valeur et l’index qui va avec. Alors nous devrions faire le code suivant :
Nous avons ici utilisé les fonctions « range() » et « len() » qui nous permettent d’afficher un index incrémenté à côté de la valeur.
Pour rappel la fonction « range() » permet de générer des séquences d’entiers consécutifs. Elle prend 3 paramètres : « start », « stop », « step ». « Start » pour la valeur de départ, « stop » pour la valeur d’arrivée mais elle ne sera pas incluse car l’index commence à zéro et « step » pour l’incrément. Si la fonction est utilisée avec un seul paramètre, c’est le paramètre stop qui sera utilisé.
La fonction « len » retourne le nombre de caractère d’une chaine.
Dans cet exemple range(len(list)) correspond à ça :
La fonction « enumerate() » est une fonction beaucoup plus simple et très efficace. Regardons ce qu’elle produit lorsqu’on l’utilise :
Cette fonction est beaucoup plus rapide, il y a moins de code à écrire.
Le résultat est un ensemble de tuples.
L’index commence à zéro mais la fonction « enumerate() » possède un paramètre « start= » qui permet de faire commencer l’index plus tard ou plus tôt.
On peut insérer dans une liste cet ensemble de tuples et naviguer très facilement dedans comme dans cet exemple :
On obtient ici une liste de tuples que l’on peut filtrer. Si par exemple on souhaite conserver uniquement les index divisibles par deux et bien nous pourrons faire ce code :
Enfin il est possible de faire un code un peu plus optimisé :
La fonction « enumerate() » fait partie des fonctions à connaitre par le data scientist en plus de celles que l’on trouve dans les librairies Panda ou Numpy. Nos formations Python vous permettront d’approfondir vos connaissances.
Comments