Python für jedes Äquivalent


188

Ich tauche in Python ein und habe eine Frage zu jeder Iteration. Ich bin neu in Python und habe einige Erfahrungen in C #. Ich frage mich also, ob es in Python eine äquivalente Funktion für die Iteration aller Elemente in meiner Sammlung gibt, z

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

oder sowas.


Antworten:


288

Sicher. Eine for-Schleife.

for f in pets:
    print f

Was ist, wenn ich auch den Index / Schlüssel kennen muss?
Candlejack

24
Dann würden Sie enumerate verwenden. for k,v in enumerate(pets): usw.
Hannu

30

So was:

for pet in pets :
  print(pet)

Tatsächlich hat Python nur foreach- forStilschleifen.


12

Es ist auch interessant, dies zu beobachten

Um die Indizes einer Sequenz iterieren, können Sie kombinieren range()und len()wie folgt dar :

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

Ausgabe

0 Mary
1 had
2 a
3 little
4 lamb

Edit # 1: Alternativer Weg:

Beim Durchlaufen einer Sequenz können der Positionsindex und der entsprechende Wert gleichzeitig mit der enumerate()Funktion abgerufen werden.

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

Ausgabe

0 tic
1 tac
2 toe

4

Für eine aktualisierte Antwort können Sie forEacheinfach eine Funktion in Python erstellen :

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

Sie können auch anpassen , dies zu map, reduce, filterund alle anderen Array - Funktionen aus anderen Sprachen oder Vorrang Sie bringen über wollen würde. Denn Schleifen sind schnell genug, aber die Kesselplatte ist länger als forEachoder die anderen Funktionen. Sie können list auch erweitern, um diese Funktionen mit einem lokalen Zeiger auf eine Klasse zu haben, sodass Sie sie auch direkt in Listen aufrufen können.


1
Können Sie bitte die Verwendung angeben?
ScottyBlades

3

Während die obigen Antworten gültig sind, ist dies der Ansatz, den ich gerne verwende, wenn Sie über ein Diktat {key: value} iterieren:

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

Wenn ich also alle Schlüssel und Werte in meinem Wörterbuch stringifizieren möchte, würde ich Folgendes tun:

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

Dies vermeidet Mutationsprobleme bei der Anwendung dieser Art von Iteration, die meiner Erfahrung nach (manchmal) zu unberechenbarem Verhalten führen können.


Eine besser lesbare Alternative dazu ist das Durchlaufen eines copyWörterbuchs, sodass Sie das Wörterbuch während der Iteration for key, value in Dictionary.copy().items()
bearbeiten

1

Für eine dict können wir eine for - Schleife durchlaufen die Verwendung index, keyund value:

dictionary = {'a': 0, 'z': 25}
for index, (key, value) in enumerate(dictionary.items()):
     ## Code here ##
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.