Python foreach equivalente

Sono le immersioni in Python e ho una domanda sull’iterazione foreach. Sono nuovo di Python e ho una certa esperienza in C#. Quindi mi chiedo, se c’è qualche funzione equivalente in Python per l’iterazione di tutto tutte le voci nella mia collezione, ad esempio,

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

o qualcosa di simile.

InformationsquelleAutor Bill | 2016-10-31

 

6 Replies
  1. 233

    Sicuro. Un ciclo for.

    for f in pets:
        print f
    • Se devo conoscere l’indice/chiave anche?
    • Poi si usa enumerare. for k,v in enumerate(pets): etc.
  2. 8

    Anche interessante osservare questo

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

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

    uscita

    0 Mary
    1 had
    2 a
    3 little
    4 lamb

    Edit#1: modo Alternativo:

    Quando scorrono in sequenza, la posizione di indice e il corrispondente valore possa essere recuperato allo stesso
    tempo utilizzando il enumerate() funzione.

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

    uscita

    0 tic
    1 tac
    2 toe
  3. 3

    Mentre le risposte di cui sopra sono validi, se si scorrono un dict {key:value} questo è l’approccio che mi piace usare:

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

    Quindi, se volevo fare qualcosa di simile stringify tutte le chiavi e i valori nel mio dizionario, vorrei fare questo:

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

    Questo evita qualsiasi mutazione problemi quando si applica questo tipo di iterazione, che può causare un comportamento irregolare (a volte) nella mia esperienza.

    • Un più leggibile alternativa a questo è l’iterazione di un copy del dizionario, in modo da poter gestire il dizionario durante l’iterazione (anche se la tua copia di tutte le chiavi e i valori prima di qualsiasi modifica) — come for key, value in Dictionary.copy().items()
  4. 2

    Per un aggiornamento di risposta si può costruire un forEach funzione in Python facilmente:

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

    Si potrebbe anche adattare questo per map, reduce, filter, e di eventuali altre funzioni di matrice da altre lingue o di precedenza che si vuole portare sopra. Per i loop sono abbastanza veloce, ma la caldaia piastra è più di forEach o altre funzioni. Si potrebbe anche estendere l’elenco di queste funzioni con un locale puntatore ad una classe, in modo che si potrebbe chiamare direttamente sulla lista.

  5. 1

    Per un dict si può usare un ciclo for per scorrere il index, key e value:

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

Lascia un commento