我必须将某些代码从python语言转换为C#,而其中的一部分却遇到了困难。def split_data(seq, length): return [seq[i:i + length] for i in range(0, len(seq), length)]print(split_data([4,5,6,8,5],2))该代码的目的是给参数提供一个int数组,并将其拆分为length参数的数组。例如,这里打印的结果将是:[[4, 5], [6, 8], [5]]问题是我需要在C#中拥有相同的东西。所以我开始创建一个List<int[]>。我知道如何在其中添加int [],但我不知道如何像在Python中那样拆分它们,尤其是使用此length参数。我试图使用for,foreach循环甚至IEnumerable来实现它,但是我无法使其工作也许有一种非常简单的方法可以完成它,或者我还没有注意到。我对C#的了解不足,也没有帮助我:)。还是要谢谢你的帮助。
2 回答
ITMISS
TA贡献1871条经验 获得超8个赞
这是使用的解决方案yield return:
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> seq, int length) {
// figure out how many little sequences we need to create
int count = seq.Count();
int numberOfTimes = count % length == 0 ? count / length : count / length + 1;
for (int i = 0 ; i < numberOfTimes ; i++) {
yield return seq.Take(length);
seq = seq.Skip(length);
}
}
用法:
new int[] {1,2,3,4,5,6,7}.Split(2)
- 2 回答
- 0 关注
- 417 浏览
添加回答
举报
0/150
提交
取消