You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何根据给定索引列表拆分有序列表为多个子列表?

按指定索引列表拆分有序列表的正确实现

要实现按给定索引列表拆分有序列表,核心逻辑是:每个子列表包含原列表中从当前索引开始,到下一个索引(不含)结束的元素,最后一个子列表则从最后一个索引延续到原列表末尾。

常见错误原因

你使用GetRange时大概率踩了这两个坑:

  • 错误计算子列表长度:GetRange的第二个参数是要截取的元素个数,不是结束索引,必须用下一个索引 - 当前索引来计算。
  • 未处理最后一个子列表:最后一个索引没有后续索引,需以原列表的总长度作为结束边界。

正确代码实现(以C#为例)

假设原列表和索引列表如下:

List<int> originalList = new List<int> { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
List<int> indexList = new List<int> { 0, 3, 8 };

拆分逻辑代码:

List<List<int>> subLists = new List<List<int>>();

for (int i = 0; i < indexList.Count; i++)
{
    int currentStart = indexList[i];
    // 确定子列表的结束边界(不含)
    int currentEnd = i < indexList.Count - 1 ? indexList[i + 1] : originalList.Count;
    // 计算要截取的元素个数
    int takeCount = currentEnd - currentStart;
    // 截取并添加子列表
    subLists.Add(originalList.GetRange(currentStart, takeCount));
}

验证示例

  1. 当索引列表为0,3,8时:

    • 第一个子列表:截取3个元素 → [1,2,3]
    • 第二个子列表:截取5个元素 → [4,5,6,7,8]
    • 第三个子列表:截取2个元素 → [9,10]
  2. 当索引列表为0,2,8时:

    • 第一个子列表:截取2个元素 → [1,2]
    • 第二个子列表:截取6个元素 → [3,4,5,6,7,8]
    • 第三个子列表:截取2个元素 → [9,10]

完全符合预期的拆分结果。

内容的提问来源于stack exchange,提问作者Jordan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 23:25:26