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
Libérer: 2025-01-18 04:26:08
original
483 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion

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>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal