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.

Rechnung
quelle
2
Mögliches Duplikat von Gibt es in Python 3 eine 'foreach'-Funktion?
Stephan Weinhold

Antworten:

288

Sicher. Eine for-Schleife.

for f in pets:
    print f
Hannu
quelle
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.

Jack Aidley
quelle
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
krishna
quelle
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.

Robert Mennell
quelle
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.

Marc Tanne
quelle
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 ##
Armaan Salam
quelle