Supponiamo di voler elaborare un iteratore e di gestirlo in blocchi.
La logica per blocco dipende da blocchi calcolati in precedenza, pertanto groupby()
non è di aiuto.Come non perdere l'elemento successivo dopo itertools.takewhile()
Il nostro amico in questo caso è itertools.takewhile():
while True:
chunk = itertools.takewhile(getNewChunkLogic(), myIterator)
process(chunk)
Il problema è che takewhile()
ha bisogno di andare oltre l'ultimo elemento che soddisfa la nuova logica pezzo, quindi 'mangiare' il primo elemento per il il prossimo pezzo.
Ci sono varie soluzioni a questo, comprese le confezioni o un di ungetc()
la C, ecc ..
La mia domanda è: esiste una soluzione elegante ?
scarica cython e crea il tuo –