Diviser l'itérateur en morceaux avec python

Code qui divise un itérateur en morceaux d'itérateurs en python. J'ai trouvé du code sur le net pour diviser la liste en morceaux, mais je n'ai pas trouvé le code pour diviser l'itérateur en morceaux, alors je l'ai écrit.

Si vous souhaitez diviser une liste en morceaux depuis le début, vous pouvez utiliser un index et il est facile de diviser les itérateurs tout en les répertoriant. Cependant, afin de diviser l'itérateur tel quel, le sous-itérateur devait notifier l'itérateur de base de StopIteration, ce qui rendait cette méthode difficile. Après tout, j'utilise une méthode un peu désagréable.

Ce qui est désagréable, c'est que j'utilise la liste épuisée = [False] pour passer des valeurs hors du sous-titre. Si vous l'avez normalement comme valeur booléenne, vous ne pouvez pas écrire de l'intérieur vers l'extérieur, nous utilisons donc une liste qui est un objet variable. La classe est utilisée dans une situation similaire à l'implémentation de référence de itertools.groupby dans la documentation officielle de Python. Il peut donc s'agir d'une implémentation de type python.

La caractéristique est qu'il devient trop énorme lorsqu'il est répertorié, et il peut être facilement utilisé même dans les cas qui affectent les performances.

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

Diviser l'itérateur en morceaux avec python
Python - Comment diviser une liste en morceaux de taille égale en Python?
Lire des morceaux PNG en Python (édition de classe)
Élément de zone rectangulaire divisé en Python
Apprenez le modèle de conception "Iterator" avec Python
Quadtree en Python --2
Python en optimisation
CURL en Python
Métaprogrammation avec Python
Python 3.3 avec Anaconda
Géocodage en python
SendKeys en Python
Méta-analyse en Python
Unittest en Python
Époque en Python
Discord en Python
Allemand en Python
DCI en Python
tri rapide en python
nCr en python
N-Gram en Python
Programmation avec Python
Plink en Python
Constante en Python
FizzBuzz en Python
Itérateur dans MySQLdb
Sqlite en Python
Étape AIC en Python
LINE-Bot [0] en Python
CSV en Python
Assemblage inversé avec Python
Réflexion en Python
Constante en Python
nCr en Python.
format en python
Scons en Python 3
Puyopuyo en python
python dans virtualenv
PPAP en Python
Quad-tree en Python
Réflexion en Python
Chimie avec Python
Hashable en Python
DirectLiNGAM en Python
LiNGAM en Python
Aplatir en Python
Aplatir en python
Mettez du texte récupéré en Python dans une feuille de calcul Google
Diviser les fichiers lors de l'écriture du plugin vim en python
Séparer les chaînes de cas de chameau mot par mot en Python
Liste triée en Python
Texte de cluster en Python
AtCoder # 2 tous les jours avec Python
Daily AtCoder # 6 en Python
Daily AtCoder # 18 en Python
Modifier les polices en Python
Motif singleton en Python
Opérations sur les fichiers en Python