Maison >développement back-end >Tutoriel Python >Comment puis-je parcourir un itérateur en morceaux à l'aide de Python ?

Comment puis-je parcourir un itérateur en morceaux à l'aide de Python ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-03 13:38:111021parcourir

How Can I Iterate Through an Iterator in Chunks Using Python?

Itérer un itérateur par morceaux d'une taille spécifique avec Python

Itérer sur un itérateur par morceaux d'une taille spécifique est une tâche courante en Python. Pour y parvenir, envisagez d'utiliser les approches suivantes :

Utilisation de la fonction itertools.grouper() :

La fonction itertools.grouper() fournit une méthode polyvalente de regroupement un itérable en morceaux. Cependant, cela nécessite une manipulation supplémentaire pour prendre en charge les morceaux finaux incomplets, ce qui peut être obtenu avec le paramètre incomplete.

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]]

Utilisation de la fonction itertools.batched() (Python 3.12) :

Introduit dans Python 3.12, la fonction itertools.batched() gère explicitement le chunking et préserve l'original type de séquence.

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]]

Solution alternative pour les itérateurs de séquence :

Pour les séquences, une solution moins générale mais pratique consiste à utiliser le découpage de liste avec une taille de pas égale à la taille du morceau.

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]]

Ces méthodes fournissent des moyens efficaces de parcourir un itérateur par morceaux, permettant une gestion flexible des morceaux finaux incomplets et préservation du type de séquence d'origine si nécessaire.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn