首页 > 后端开发 > C++ > 如何正确地将列表拆分为自定义大小的较小列表(例如 30 个或更少)?

如何正确地将列表拆分为自定义大小的较小列表(例如 30 个或更少)?

Barbara Streisand
发布: 2025-01-18 04:47:12
原创
652 人浏览过

How to Correctly Split a List into Smaller Lists of a Custom Size (e.g., 30 or less)?

将列表分割成自定义大小的较小列表

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板