为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
慕尼黑5688855 2021-05-04 13:10:02
我必须将某些代码从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)


查看完整回答
反对 回复 2021-05-08
  • 2 回答
  • 0 关注
  • 417 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信