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

如何用C#实现Python中origList[x-12:x]式的滚动年度列表切片?

在C#中实现滚动年度子列表

假设你有一个存储月度值的List<T>(比如List<decimal>),要实现和Python中origList[x-12:x]等价的滚动年度子列表获取,可以用以下几种方法:

1. 使用List<T>.GetRange方法

这是最直接高效的方式,GetRange是List<T>自带的方法,专门用于提取连续子列表:

List<decimal> origList = new List<decimal> { /* 填入你的月度值数据 */ };
// 假设x的取值范围是12到origList.Count(确保能取到完整12个年度元素)
for (int x = 12; x <= origList.Count; x++)
{
    // 从索引x-12开始取12个元素,完全匹配Python切片origList[x-12:x]的结果
    List<decimal> tempList = origList.GetRange(x - 12, 12);
    // 这里处理获取到的滚动年度列表
}

边界情况处理

如果x小于12(比如列表元素不足12个时),可根据需求调整:

  • 若要取从列表开头到x的所有元素:
int startIndex = Math.Max(0, x - 12);
int count = x - startIndex;
List<decimal> tempList = origList.GetRange(startIndex, count);

2. 使用LINQ的Skip和Take

如果需要配合其他LINQ查询操作,可采用这种更灵活的方式:

using System.Linq;

List<decimal> origList = new List<decimal> { /* 填入你的月度值数据 */ };
for (int x = 12; x <= origList.Count; x++)
{
    List<decimal> tempList = origList.Skip(x - 12).Take(12).ToList();
    // 这里处理获取到的滚动年度列表
}

补充说明

Python的切片origList[x-12:x]是左闭右开区间,包含索引x-12的元素、不包含索引x的元素;C#的GetRange(x-12,12)和Skip(x-12).Take(12)都能实现完全等价的效果——从x-12开始取12个元素,刚好覆盖到索引x-1,和Python切片的结果一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:45:42