猿问

在C#中将一个int数组拆分为几个int数组的列表

我必须将某些代码从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#的了解不足,也没有帮助我:)。


还是要谢谢你的帮助。


慕尼黑5688855
浏览 418回答 2
2回答

ITMISS

这是使用的解决方案yield return:public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> seq, int length) {&nbsp; &nbsp; // figure out how many little sequences we need to create&nbsp; &nbsp; int count = seq.Count();&nbsp; &nbsp; int numberOfTimes = count % length == 0 ? count / length : count / length + 1;&nbsp; &nbsp; for (int i = 0 ; i < numberOfTimes ; i++) {&nbsp; &nbsp; &nbsp; &nbsp; yield return seq.Take(length);&nbsp; &nbsp; &nbsp; &nbsp; seq = seq.Skip(length);&nbsp; &nbsp; }}用法:new int[] {1,2,3,4,5,6,7}.Split(2)
随时随地看视频慕课网APP
我要回答