Python foreach équivalent

Je plonge dans Python et j'ai une question sur l'itération foreach. Je suis nouveau en Python et j'ai une certaine expérience en C#. Donc, je me demande s'il y a une fonction équivalente en Python pour l'itération sur tous les éléments de ma collection, par exemple

pets = ['cat', 'dog', 'fish']
marks = [ 5, 4, 3, 2, 1]

Ou quelque chose comme ça.

73
demandé sur Bill 2016-10-31 19:33:59

5 réponses

Bien sûr. Une boucle for.

for f in pets:
    print f
125
répondu Hannu 2016-10-31 16:36:00

Comme ceci:

for pet in pets :
  print(pet)

En fait, Python seulement a foreach style for boucles.

16
répondu Jack Aidley 2016-10-31 16:36:24

C'est aussi intéressant d'observer ceci

Pour itérer sur les indices d'une séquence, vous pouvez combiner range() et len() comme suit:

a = ['Mary', 'had', 'a', 'little', 'lamb']
for i in range(len(a)):
  print(i, a[i])

Sortie

0 Mary
1 had
2 a
3 little
4 lamb

Modifier#1: autre manière:

Lors d'une boucle à travers une séquence, l'index de position et la valeur correspondante peuvent être récupérés à la même temps en utilisant la fonction enumerate().

for i, v in enumerate(['tic', 'tac', 'toe']):
  print(i, v)

Sortie

0 tic
1 tac
2 toe
2
répondu krishna 2018-05-20 12:23:58

Bien que les réponses ci-dessus soient valides, si vous itérez sur un dict {key: value} c'est l'approche que j'aime utiliser:

for key, value in Dictionary.items():
    print(key, value)

Donc, si je voulais faire quelque chose comme stringify toutes les clés et valeurs dans mon dictionnaire, je ferais ceci:

stringified_dictionary = {}
for key, value in Dictionary.items():
    stringified_dictionary.update({str(key): str(value)})
return stringified_dictionary

Cela évite tout problème de mutation lors de l'application de ce type d'itération, ce qui peut provoquer un comportement erratique (parfois) dans mon expérience.

1
répondu Marc Tanne 2018-08-28 21:27:09

Pour une réponse mise à jour, vous pouvez facilement créer une fonction forEach en Python:

def forEach(list, function)
  for i,v in enumerate(list))
    function(v, i, list)

Vous pouvez également l'adapter à map, reduce, filter, et toutes les autres fonctions de tableau d'autres langues ou préséance que vous voudriez apporter. Pour les boucles sont assez rapides, mais la plaque de la chaudière est plus longue que forEach ou les autres fonctions. Vous pouvez également étendre list pour avoir ces fonctions avec un pointeur local vers une classe afin que vous puissiez les appeler directement sur les listes.

0
répondu Robert Mennell 2018-09-17 03:39:36