Maison >développement back-end >C++ >Comment diviser efficacement une liste en sous-listes plus petites d'une taille définie ?

Comment diviser efficacement une liste en sous-listes plus petites d'une taille définie ?

DDD
DDDoriginal
2025-01-18 04:26:08490parcourir

How to Efficiently Split a List into Smaller Sublists of a Defined Size?

Diviser la liste en sous-listes de taille spécifiée

Cet article explique comment diviser une liste en sous-listes de taille spécifiée et propose deux méthodes efficaces.

Méthode 1 : Utiliser les méthodes d'extension

Le code suivant montre comment implémenter le fractionnement de liste via des méthodes d'extension :

<code class="language-csharp">public static class ListExtensions
{
    public static List<List<T>> ChunkBy<T>(this List<T> source, int chunkSize)
    {
        return source
            .Select((x, i) => new { Index = i, Value = x })
            .GroupBy(x => x.Index / chunkSize)
            .Select(x => x.Select(v => v.Value).ToList())
            .ToList();
    }
}</code>

Utilisation : Appelez directement la méthode ChunkBy de la liste, en passant la taille de bloc requise en paramètre. Par exemple, divisez une liste de 18 éléments en morceaux de 5 éléments :

<code class="language-csharp">List<List<int>> chunks = myList.ChunkBy(5);</code>

Le résultat sera une liste de quatre sous-listes, chacune contenant cinq éléments.

Méthode 2 : Utiliser des boucles

Une autre façon consiste à utiliser une simple boucle :

<code class="language-csharp">public static List<List<T>> SplitList<T>(List<T> list, int chunkSize)
{
    List<List<T>> chunks = new List<List<T>>();

    while (list.Count > 0)
    {
        List<T> chunk = new List<T>(chunkSize);
        for (int i = 0; i < chunkSize && list.Count > 0; i++)
        {
            chunk.Add(list[0]);
            list.RemoveAt(0);
        }
        chunks.Add(chunk);
    }

    return chunks;
}</code>

Cette méthode accepte une liste et la taille de morceau souhaitée comme arguments, crée une nouvelle liste de listes et parcourt la liste d'entrée, en ajoutant des éléments chunkSize à chaque nouvelle sous-liste jusqu'à ce que la liste d'entrée soit vide.

Les deux méthodes peuvent efficacement diviser la liste en sous-listes d'une taille spécifiée. Choisissez la méthode qui correspond le mieux à vos besoins spécifiques et à votre style de codage.

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