Pour les boucles en Python

Pour les instructions de boucle

Python utilise une boucle for pour parcourir une liste d'éléments. Contrairement à C ou Java, qui utilisent la boucle for pour modifier une valeur par étapes et accéder à quelque chose comme un tableau utilisant cette valeur.

Les boucles For parcourent des structures de données basées sur des collections telles que des listes, des tuples et des dictionnaires.

La syntaxe de base est:

for value in list_of_values: # use value inside this block

En général, vous pouvez utiliser n'importe quoi comme valeur d'itérateur, où les entrées de l'itérable peuvent être affectées. Par exemple, vous pouvez décompresser des tuples à partir d'une liste de tuples:

list_of_tuples = [(1,2), (3,4)] for a, b in list_of_tuples: print("a:", a, "b:", b)

D'un autre côté, vous pouvez boucler sur tout ce qui est itérable. Vous pouvez appeler une fonction ou utiliser un littéral de liste.

for person in load_persons(): print("The name is:", person.name)
for character in ["P", "y", "t", "h", "o", "n"]: print("Give me a '{}'!".format(character))

Quelques manières dont les boucles For sont utilisées:

Itérer sur la fonction range ()

for i in range(10): print(i)

Plutôt que d'être une fonction, range est en fait un type de séquence immuable. La sortie contiendra les résultats de la borne inférieure, c'est-à-dire de 0 à la borne supérieure, c'est-à-dire 10 mais à l'exclusion de 10. Par défaut, la borne inférieure ou l'indice de départ est mis à zéro. Production:

> 0 1 2 3 4 5 6 7 8 9 >

De plus, on peut spécifier la limite inférieure de la séquence et même le pas de la séquence en ajoutant un deuxième et un troisième paramètre.

for i in range(4,10,2): #From 4 to 9 using a step of two print(i)

Production:

> 4 6 8 >

fonction xrange ()

Pour la plupart, xrange et range sont exactement les mêmes en termes de fonctionnalités. Ils fournissent tous deux un moyen de générer une liste d'entiers que vous pouvez utiliser, comme vous le souhaitez. La seule différence est que range renvoie un objet de liste Python et xrange renvoie un objet xrange. Cela signifie que xrange ne génère pas réellement de liste statique au moment de l'exécution comme le fait range. Il crée les valeurs dont vous avez besoin avec une technique spéciale appelée production. Cette technique est utilisée avec un type d'objet appelé générateurs.

Une autre chose à ajouter. Dans Python 3.x, la fonction xrange n'existe plus. La fonction range fait maintenant ce que xrange fait dans Python 2.x

Itérer des valeurs dans une liste ou un tuple

A = ["hello", 1, 65, "thank you", [2, 3]] for value in A: print(value)

Production:

> hello 1 65 thank you [2, 3] >

Itérer sur les clés d'un dictionnaire (aka hashmap)

fruits_to_colors = {"apple": "#ff0000", "lemon": "#ffff00", "orange": "#ffa500"} for key in fruits_to_colors: print(key, fruits_to_colors[key])

Production:

> apple #ff0000 lemon #ffff00 orange #ffa500 >

Itérer sur deux listes de même taille en une seule boucle avec la fonction zip ()

A = ["a", "b", "c"] B = ["a", "d", "e"] for a, b in zip(A, B): print a, b, a == b 

Production:

> a a True b d False c e False >

Itérer sur une liste et obtenir l'index correspondant avec la fonction enumerate ()

A = ["this", "is", "something", "fun"] for index,word in enumerate(A): print(index, word)

Production:

> 0 this 1 is 2 something 3 fun >

Un cas d'utilisation courant est l'itération sur un dictionnaire:

for name, phonenumber in contacts.items(): print(name, "is reachable under", phonenumber)

Si vous avez absolument besoin d'accéder à l'index actuel de votre itération, ne l' utilisez PASrange(len(iterable)) ! C'est une pratique extrêmement mauvaise et vous fera rire beaucoup de la part des développeurs Python seniors. Utilisez enumerate()plutôt la fonction intégrée :

for index, item in enumerate(shopping_basket): print("Item", index, "is a", item)

pour les instructions / else

Pyhton vous permet d'utiliser else avec des boucles for, le cas else est exécuté lorsqu'aucune des conditions dans le corps de la boucle n'est satisfaite. Pour utiliser le else, nous devons utiliser l' breakinstruction afin que nous puissions sortir de la boucle sur une condition satsfied.Si nous ne sortons pas, la partie else sera exécutée.

week_days = ['Monday','Tuesday','Wednesday','Thursday','Friday'] today = 'Saturday' for day in week_days: if day == today: print('today is a week day') break else: print('today is not a week day')

Dans le cas ci-dessus, la sortie sera today is not a week daypuisque la coupure dans la boucle ne sera jamais exécutée.

Itérer sur une liste à l'aide de la fonction de boucle en ligne

Nous pourrions également itérer en ligne en utilisant python, par exemple si nous devons mettre en majuscules tous les mots d'une liste à partir d'une liste, nous pourrions simplement faire ce qui suit:

A = ["this", "is", "awesome", "shinning", "star"] UPPERCASE = [word.upper() for word in A] print (UPPERCASE)

Production:

> ['THIS', 'IS', 'AWESOME', 'SHINNING', 'STAR'] >

Plus d'information:

  • Documentation Python2 pour la boucle
  • Python3 pour la documentation des boucles