將清單分割成指定大小的子清單
本文介紹如何將列表分割成指定大小的子列表,並提供兩種高效方法。
方法一:使用擴充方法
以下程式碼展示如何透過擴充方法實現清單分割:
<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>
使用方法:直接呼叫清單的ChunkBy
方法,傳入所需的區塊大小作為參數。例如,將包含18個元素的列表分割成5個元素的區塊:
<code class="language-csharp">List<List<int>> chunks = myList.ChunkBy(5);</code>
結果將會得到一個包含四個子列表的列表,每個子列表包含五個元素。
方法二:使用循環
另一個方法是使用簡單的循環:
<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>
此方法接受列表和所需的區塊大小作為參數,建立一個新的列表列表,並迭代輸入列表,將chunkSize
個元素添加到每個新的子列表中,直到輸入列表為空。
兩種方法都能有效地將清單分割成指定大小的子清單。選擇最符合您特定需求和編碼風格的方法。
以上是如何有效地將清單拆分為指定大小的較小子清單?的詳細內容。更多資訊請關注PHP中文網其他相關文章!