gpt4 book ai didi

c# - ListView 滑动窗口

转载 作者:行者123 更新时间:2023-11-30 22:38:48 25 4
gpt4 key购买 nike

我有一个数字列表,我想选择一个特定大小的滑动窗口:

List<double> lst = {3,78,24,25,634,25,478,24};
int WindowSize = 4;

index = 0: return {3};
index = 1: return {3,78};
index = 2: return {3,78,24};
index = 3: return {3,78,24,25};
index = 4: return {78,24,25,634};
index = 5: return {24,25,634,25};
index = 6: return {25,634,25,478};
index = 7: return {634,25,478,24};

这不是一个很难的概念,但我正在尝试使用 .Skip() .Take() 扩展方法来实现。有没有更简单的方法来选择项目之前的 WindowSize 条目,而不是试图找到起点,然后获取下一个 WindowSize 条目?我试图想出一种更简单的方法来使用 linq 执行此操作,而不是使用 Skip()Take() 进行所需的所有边界检查。

您可以反转列表,然后执行 Count() - 索引,然后执行 Take(),但这似乎效率不高。

最佳答案

我想这将需要最少的边界检查——只需要基本的完整性检查。看看这是否有效

IEnumerable<double> GetWindow(List<double> lst, int index, int windowSize) {
if(index >= lst.Length){
// Throw proper exception
}
return lst.Skip(index-windowSize).Take(Math.Min(index,windowSize));
}

关于c# - ListView 滑动窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5987051/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com