Heim >Backend-Entwicklung >Python-Tutorial >Wie kann ich mit Python in Blöcken durch einen Iterator iterieren?
Iterieren eines Iterators durch Chunks mit Python
Das Iterieren über einen Iterator durch Chunks einer bestimmten Größe ist eine häufige Aufgabe in Python. Um dies zu erreichen, sollten Sie die folgenden Ansätze in Betracht ziehen:
Verwendung der Funktion itertools.grouper():
Die Funktion itertools.grouper() bietet eine vielseitige Methode zum Gruppieren eine iterierbare in Stücke. Allerdings ist eine zusätzliche Bearbeitung erforderlich, um unvollständige Endblöcke zu berücksichtigen, was mit dem Parameter „incomplete“ erreicht werden kann.
from itertools import grouper it = iter([1, 2, 3, 4, 5, 6, 7]) chunk_size = 3 chunks = list(grouper(it, chunk_size, incomplete='ignore')) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
Verwendung der Funktion itertools.batched() (Python 3.12):
Führt in Python 3.12 die Funktion itertools.batched() ein, die das Chunking explizit behandelt und die beibehält Originalsequenztyp.
from itertools import batched it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = list(batched(it, chunk_size)) print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
Alternative Lösung für Sequenziteratoren:
Für Sequenzen besteht eine weniger allgemeine, aber praktische Lösung darin, Listenaufteilung mit gleicher Schrittgröße zu verwenden auf die Blockgröße.
it = [1, 2, 3, 4, 5, 6, 7] chunk_size = 3 chunks = [it[i:i + chunk_size] for i in range(0, len(it), chunk_size)] print(chunks) # [[1, 2, 3], [4, 5, 6], [7]]
Diese Methoden bieten effiziente Möglichkeiten, über einen Iterator in Blöcken zu iterieren und ermöglichen so für den flexiblen Umgang mit unvollständigen Endstücken und die Beibehaltung des ursprünglichen Sequenztyps bei Bedarf.
Das obige ist der detaillierte Inhalt vonWie kann ich mit Python in Blöcken durch einen Iterator iterieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!