如果我需要将数组拆分为特定长度,例如假设我有16个元素的数组,我想将其拆分为3个数组,每个数组包含5个元素 当涉及到最后一个阵列应该采取其余的 所以输出应该是这样的
我非常喜欢this answer,但它无法拆分为预定义的长度
public static IEnumerable<List<int>> SplitWhenNotIncreasing(List<int> numbers)
{
for (int i = 1, start = 0; i <= numbers.Count; ++i)
{
if (i != numbers.Count && numbers[i] > numbers[i - 1])
continue;
yield return numbers.GetRange(start, i - start);
start = i;
}
}
答案 0 :(得分:1)
public static IEnumerable<List<T>> SplitArray<T>(T[] arr, int splitsNumber)
{
var list = arr.ToList();
int size = list.Count / splitsNumber;
int pos = 0;
for (int i = 0; i + 1 < splitsNumber; ++i, pos += size)
{
yield return list.GetRange(pos, size);
}
yield return list.GetRange(pos, list.Count - pos);
}