Teilen Sie den Iterator mit Python in Blöcke

Code, der einen Iterator in Teile von Iteratoren in Python aufteilt. Ich habe im Internet Code gefunden, um die Liste in Blöcke aufzuteilen, aber ich konnte den Code zum Aufteilen des Iterators in Blöcke nicht finden, also habe ich ihn geschrieben.

Wenn Sie eine Liste von Anfang an in Blöcke aufteilen möchten, können Sie einen Index verwenden, und es ist einfach, die Iteratoren zu teilen, während Sie sie auflisten. Um den Iterator jedoch so zu teilen, wie er ist, musste der Unteriterator den Basisiterator über StopIteration informieren, was diese Methode schwierig machte. Immerhin verwende ich eine etwas unangenehme Methode.

Was unangenehm ist, ist, dass ich die Liste erschöpft = [Falsch] verwende, um Werte aus dem Subiter zu übergeben. Wenn Sie es normalerweise als Bool-Wert haben, können Sie nicht von innen nach außen schreiben, daher verwenden wir eine Liste, die ein variables Objekt ist. Die Klasse wird in einer ähnlichen Situation wie die Referenzimplementierung von itertools.groupby in der offiziellen Python-Dokumentation verwendet. Es kann sich also um eine Python-ähnliche Implementierung handeln.

Das Merkmal ist, dass es zu groß wird, wenn es aufgelistet wird, und es kann auch in Fällen, die die Leistung beeinträchtigen, leicht verwendet werden.

def chunk(it, n):
    it = iter(it)
    exhausted = [False]
    def subiter(it, n, exhausted):
        for i in range(n):
            try:
                yield next(it)
            except StopIteration:
                exhausted[0] = True
    while not exhausted[0]:
        yield subiter(it, n, exhausted)

Recommended Posts

Teilen Sie den Iterator mit Python in Blöcke
Python - Wie teilt man eine Liste in Python in gleich große Teile auf?
Lesen Sie PNG-Chunks in Python (Klassenausgabe)
In Python geteiltes Rechteckbereichselement
Lernen Sie das Entwurfsmuster "Iterator" mit Python
Quadtree in Python --2
Python in der Optimierung
CURL in Python
Metaprogrammierung mit Python
Python 3.3 mit Anaconda
Geokodierung in Python
SendKeys in Python
Metaanalyse in Python
Unittest in Python
Epoche in Python
Zwietracht in Python
Deutsch in Python
DCI in Python
Quicksort in Python
nCr in Python
N-Gramm in Python
Programmieren mit Python
Plink in Python
Konstante in Python
FizzBuzz in Python
Iterator in MySQLdb
SQLite in Python
Schritt AIC in Python
LINE-Bot [0] in Python
CSV in Python
Reverse Assembler mit Python
Reflexion in Python
Konstante in Python
nCr in Python.
Format in Python
Scons in Python 3
Puyopuyo in Python
Python in Virtualenv
PPAP in Python
Quad-Tree in Python
Reflexion in Python
Chemie mit Python
Hashbar in Python
DirectLiNGAM in Python
LiNGAM in Python
In Python reduzieren
In Python flach drücken
Fügen Sie in Python gekratzten Text in eine Google-Tabelle ein
Teilen Sie Dateien beim Schreiben des Vim-Plugins in Python
Teilen Sie Kamelfallzeichenfolgen in Python Wort für Wort
Sortierte Liste in Python
Clustertext in Python
AtCoder # 2 jeden Tag mit Python
Täglicher AtCoder # 6 in Python
Täglicher AtCoder # 18 in Python
Bearbeiten Sie Schriftarten in Python
Singleton-Muster in Python
Dateioperationen in Python