将列表分割成自定义大小的较小列表
将列表分割成特定大小的较小列表时,遇到不正确的列表分割可能会令人沮丧。让我们探讨如何修改您的函数 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中文网其他相关文章!