Maison >développement back-end >Tutoriel Python >Comment diviser efficacement une liste en morceaux équilibrés en Python ?

Comment diviser efficacement une liste en morceaux équilibrés en Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-28 19:33:10388parcourir

How to Efficiently Divide a List into Balanced Chunks in Python?

Comment diviser une liste en portions équilibrées

La division d'une liste en morceaux de taille égale est essentielle dans divers scénarios de programmation. Python propose plusieurs méthodes pour accomplir cette tâche, offrant flexibilité et efficacité. Une approche populaire utilise une fonction génératrice.

Le générateur chunks(), introduit dans la réponse, vous permet de partitionner une liste en morceaux d'une taille spécifiée. Il parcourt la liste par étapes de la taille de morceau définie, produisant des morceaux consécutifs. Le code suivant montre comment utiliser le générateur chunks() :

def chunks(lst, n):
    """Yield successive n-sized chunks from lst."""
    for i in range(0, len(lst), n):
        yield lst[i:i + n]

Pour illustrer sa fonctionnalité, envisagez de diviser une liste d'entiers en morceaux de taille 10 :

import pprint
pprint.pprint(list(chunks(range(10, 75), 10)))

Ce code produit le résultat suivant, présentant la liste divisée en morceaux de taille égale :

[[10, 11, 12, 13, 14, 15, 16, 17, 18, 19],
 [20, 21, 22, 23, 24, 25, 26, 27, 28, 29],
 [30, 31, 32, 33, 34, 35, 36, 37, 38, 39],
 [40, 41, 42, 43, 44, 45, 46, 47, 48, 49],
 [50, 51, 52, 53, 54, 55, 56, 57, 58, 59],
 [60, 61, 62, 63, 64, 65, 66, 67, 68, 69],
 [70, 71, 72, 73, 74]]

Alors que l'approche du générateur est recommandé pour sa clarté et son efficacité, Python propose également une solution concise de compréhension de liste pour le segmentage de liste :

[lst[i:i + n] for i in range(0, len(lst), n)]

N'oubliez pas que l'utilisation de fonctions nommées comme chunks() améliore la lisibilité et la maintenabilité du code.

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