Maison >développement back-end >C++ >Comment diviser efficacement une liste en sous-listes plus petites d'une taille définie ?
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!