Python foreach equivalente


191

Mi sto tuffando in Python e ho una domanda su ogni iterazione. Sono nuovo di Python e ho una certa esperienza in C #. Quindi mi chiedo se esiste una funzione equivalente in Python per l'iterazione su tutti gli elementi della mia collezione, ad es.

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

o qualcosa del genere.


Risposte:


294

Sicuro. Un ciclo for.

for f in pets:
    print f

Che dire se devo conoscere anche l'indice / chiave?
Candelabro

25
Quindi useresti enumerate. for k,v in enumerate(pets): ecc.
Hannu,

30

Come questo:

for pet in pets :
  print(pet)

In effetti, Python ha solofor loop di stile foreach .


12

È anche interessante osservarlo

Per scorrere gli indici di una sequenza, puoi combinare range()e len()come segue:

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

produzione

0 Mary
1 had
2 a
3 little
4 lamb

Modifica n. 1: modo alternativo:

Quando si scorre in sequenza una sequenza, l'indice di posizione e il valore corrispondente possono essere recuperati contemporaneamente utilizzando la enumerate()funzione.

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

produzione

0 tic
1 tac
2 toe

4

Per una risposta aggiornata puoi creare forEachfacilmente una funzione in Python:

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

Si potrebbe anche adattare questo a map, reduce, filter, e qualsiasi altra funzione di array da altre lingue o la precedenza che ci si vuole portare oltre. Per i loop sono abbastanza veloci, ma la piastra della caldaia è più lunga forEacho le altre funzioni. È inoltre possibile estendere l'elenco per avere queste funzioni con un puntatore locale a una classe in modo da poterle chiamare direttamente anche sugli elenchi.


1
Puoi includere l'utilizzo per favore?
ScottyBlades,

3

Mentre le risposte sopra sono valide, se stai ripetendo un dict {chiave: valore}, questo è l'approccio che mi piace usare:

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

Pertanto, se volessi fare qualcosa come stringere tutte le chiavi e i valori nel mio dizionario, farei questo:

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

Ciò evita qualsiasi problema di mutazione quando si applica questo tipo di iterazione, che può causare comportamenti irregolari (a volte) nella mia esperienza.


Un'alternativa più leggibile a questa è iterare su un copydizionario, in modo da poter manipolare il dizionario durante l'iterazione (anche se la tua copia sarà di tutte le chiavi e i valori prima di qualsiasi modifica) - comefor key, value in Dictionary.copy().items()
Marc Maxmeister,

1

Per un dict possiamo usare un ciclo for per scorrere tra index, keye value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.