Python: Zugriff auf iterator-Objekt in for-Schleifen
Möchte ich Schritt den loop-iterator explizit innerhalb der Schleife. Ist es ein 'schöner' Weg, dies zu tun als:
idx = iter(range(0, 10))
for i in idx:
print i
if i == 5:
print "consuming %i in step %i" % (next(idx), i)
Edit: ich Wandere, wenn es gibt einen Weg, um Zugang zu den loop-iterator andere als die Definition explizit wie in meinem Beispiel.
Dank!
- Was ist falsch mit
next(idx)
? Ist es nicht explizite und schön genug? - Nicht, wenn
idx
nicht bereits einen iterator (zB. eine Liste). Es ist auch sehr ungewöhnlich, die Praxis zu nehmen, dienext
von einem iterator, während Sie Durchlaufen ihn. Würde ich dringend empfehlen, gegen Sie. - Ich bin besorgt über den Kopf der Schleife; in der Regel würde man sehen, so etwas wie
for i in range(0, 10)
- aber dann bekomme ich keine Zugriff auf den iterator-Objekt... - Verwandte: stackoverflow.com/questions/4810160/...
- auch Verwandte, und mit einer gründlicheren Erklärung, warum dies funktioniert: stackoverflow.com/a/46522452/6053327
Du musst angemeldet sein, um einen Kommentar abzugeben.
Könnten Sie einen generator an, der Ertrag Elemente aus dem iterator-einzeln oder paarweise. Dies hält die for-Schleife schön und einfach, während eine Isolierung der Filterlogik in den generator.
my_filter
), so dass es liefert ein Objekt, das enthält entweder ein einzelnes element ausidx
oder mehrere Elemente ausidx
. Idealerweisefor-loop
sollten die Objekte gleichwertig-es sollte nicht darum, ob das Objekt enthält ein einziges element ausidx
oder mehrere Elemente.my_filter
erzeugen würde meine pairings, aber mein code ist ein bisschen komplizierter, und dercontinue
immy_filter
-Schleife würde nicht gut funktionieren. So stellt es sich mir wieder auf die ursprüngliche Frage: wie kann ich konsumiere das nächste element innerhalb der gleichen iteration... Vielleicht die Erstellung der iterator-Objekt explizit und mitnext()
wie in meinem ersten Beispiel ist der Weg zu gehen für mich... Danke für deine Mühe!Ergebnisse in