Itérer efficacement les itérateurs en Python à l'aide de morceaux
Lorsque vous travaillez avec de grands ensembles de données, il devient nécessaire de traiter les données en lots ou en morceaux plus petits. Cela permet de gérer l’utilisation de la mémoire et d’améliorer les performances. Une façon d'y parvenir consiste à utiliser les itérateurs de Python pour diviser les données en morceaux de la taille souhaitée.
La recette du groupeur
Dans la documentation itertools, le grouper() La recette fournit un moyen pratique de regrouper les données en morceaux de longueur fixe. Cependant, il peut ne pas gérer les morceaux incomplets comme vous le souhaitez.
La recette par lots
Un ajout plus récent aux recettes itertools est la fonction batched(). Il excelle dans le regroupement de données en tuples de longueur spécifiée. Contrairement à grouper(), batched() gère explicitement les morceaux incomplets, renvoyant un lot plus court sans exceptions ni valeurs de remplissage.
Solution spécifique à la séquence
Si vous travaillez uniquement avec des séquences, vous pouvez utiliser une approche plus simple :
(my_list[i:i + chunk_size] for i in range(0, len(my_list), chunk_size))
Cette solution préserve le type de la séquence d'origine et gère gracieusement le dernier chunk.
Python 3.12 et itertools.batched
Dans Python 3.12 et supérieur, itertools.batched peut être utilisé directement. Elle offre les mêmes fonctionnalités que la recette batched() :
itertools.batched(iterable, n) # Batch data into tuples of length n
Conclusion
Le choix de la méthode appropriée dépend de vos besoins spécifiques et de la version de Python que vous utilisez en utilisant. Pour un traitement par lots général et flexible, la recette batched() ou itertools.batched de Python 3.12 est recommandée. Pour les tâches spécifiques à une séquence, la solution basée sur la séquence offre simplicité et préservation du type.
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!