Nehmen wir an, wir möchten einen Iterator verarbeiten und wollen es durch Chunks behandeln.
Die Logik pro Chunk hängt von zuvor berechneten Chunks ab, so dass groupby()
nicht hilft.Wie nicht das nächste Element nach itertools.takewhile() zu verpassen
in diesem Fall unser Freund ist itertools.takewhile():
while True:
chunk = itertools.takewhile(getNewChunkLogic(), myIterator)
process(chunk)
Das Problem ist, dass takewhile()
Bedürfnisse nach dem letzten Elemente gehen, die die neue Chunk Logik erfüllt, so dass das erste Element ‚Essen‘ für der nächste Brocken.
Es gibt verschiedene Lösungen an, dass, einschließlich Verpackung oder à la C der ungetc()
, etc ..
Meine Frage ist: Gibt es eine elegante Lösung?
Holen Sie sich Cython und erstellen Sie Ihre eigenen –