web-dev-qa-db-fra.com

Python pour chaque équivalent

Je plonge dans Python et j’ai une question à propos de chaque itération. Je suis nouveau sur Python et j'ai de l'expérience en C #. Je me demande donc s'il existe une fonction équivalente dans Python pour effectuer une 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.

134
Bill

Sûr. Une boucle pour.

for f in pets:
    print f
211
Hannu

Comme ça:

for pet in pets :
  print(pet)

En fait, Python niquement a pour chaque style for boucles.

25
Jack Aidley

C'est aussi intéressant d'observer cette

Pour parcourir les index 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

Edit # 1: Autre manière:

Lors de la lecture en boucle d'une séquence, l'index de position et la valeur correspondante peuvent être extraits simultanément à l'aide de la fonction enumerate().

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

sortie

0 tic
1 tac
2 toe
8
krishna

Bien que les réponses ci-dessus soient valides, si vous parcourez un dict {clé: valeur}, c’est l’approche que j’aime utiliser:

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

Par conséquent, si je voulais faire quelque chose comme stringifier toutes les clés et les valeurs de mon dictionnaire, je le ferais:

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) selon mon expérience.

3
Marc Tanne

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

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

Vous pouvez également adapter cela à map, reduce, filter et à toute autre fonction de tableau d'autres langues ou priorité que vous souhaitez utiliser. 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 la liste pour avoir ces fonctions avec un pointeur local sur une classe afin de pouvoir les appeler directement sur des listes.

2
Robert Mennell

Pour un dict, nous pouvons utiliser une boucle for pour parcourir les index, key et value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
1
Armaan Salam