Maison >développement back-end >Tutoriel Python >Comment diviser une liste en parties presque égales en Python ?

Comment diviser une liste en parties presque égales en Python ?

Barbara Streisand
Barbara Streisandoriginal
2024-11-16 10:23:021020parcourir

How to Divide a List into Nearly Equal Parts in Python?

Diviser une liste en parties presque égales

Diviser une liste en parties égales est une tâche courante en programmation. La méthode chunks() intégrée à Python offre un moyen de diviser une liste en morceaux de taille égale, mais que se passe-t-il si vous souhaitez plutôt diviser la liste en parties à peu près égales ?

Une approche pour y parvenir consiste à utilisez un générateur de liste :

def split(a, n):
    k, m = divmod(len(a), n)
    return (a[i*k+min(i, m):(i+1)*k+min(i+1, m)] for i in range(n))

Voici comment cela fonctionne :

  • k est le nombre d'éléments dans chaque partie, et m est le reste en divisant la longueur de la liste par n.
  • La boucle for parcourt le nombre souhaité de parties n.
  • Pour chaque partie, elle calcule les indices de début et de fin en fonction de k, m et l'itération actuelle i.
  • La tranche a[start:end] extrait les éléments de l'itération actuelle part.

Exemple :

>>> list(split(range(11), 3))
[[0, 1, 2, 3], [4, 5, 6, 7], [8, 9, 10]]

Ce code divise une liste de longueur 11 en 3 parties, ce qui donne des parties avec 4, 4 et 3 éléments, respectivement.

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