將清單分割成自訂大小的較小清單
將清單分割成特定大小的較小清單時,遇到不正確的清單分割可能會令人沮喪。讓我們探討如何修改您的函數 splitList
以確保準確地將其分割成大小為 30 或更小的清單。
您原始函數的問題在於循環計算:for (int i=(int)(Math.Ceiling((decimal)(locations.Count/nSize))); i>=0; i--)
。您不是從所需子列表數迭代到 0,而是從更高的值開始循環,導致不正確的分割。
更新後的函數應為:
<code class="language-c#">public static List<List<float>> splitList(List<float> locations, int nSize = 30) { List<List<float>> list = new List<List<float>>(); int numLists = (int)(Math.Ceiling((decimal)(locations.Count / nSize))); for (int i = 0; i < numLists; i++) { List<float> subLocat = new List<float>(locations); // 创建locations的副本 if (subLocat.Count >= ((i * nSize) + nSize)) subLocat.RemoveRange(i * nSize, nSize); else subLocat.RemoveRange(i * nSize, subLocat.Count - (i * nSize)); Debug.Log("Index: " + i.ToString() + ", Size: " + subLocat.Count.ToString()); list.Add(subLocat); } return list; }</code>
在此更新的版本中,循環從 0 迭代到所需子列表數 (numLists)。這確保了函數從適當的位置開始分割。 此外,程式碼中使用了List<float> subLocat = new List<float>(locations);
建立了locations
的副本,避免了原始清單被修改的問題。
以上是如何正確地將清單拆分為自訂大小的較小清單(例如 30 個或更少)?的詳細內容。更多資訊請關注PHP中文網其他相關文章!