在C#中,如果可能的话,使用Linq,我想检索列表中的 n 元素(有X个元素),其距离,如果可能的话, 与其他人相同。
例如,假设我们有一个整数列表:
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
n = 4,我想得到:
0 4 8 12
n = 8:
0 2 4 6 8 10 12 14
n = 3:
0 7 14
如果不可能,例如n = 14,我只想检索前14项。
对于这个问题,n当然是< X
修改 返回的输出应该在整个范围内“扩展”。
(即,对于n = 3:
0 1 2
不可接受)
此外,输出应从列表的第一个元素开始(即:此处为0)
答案 0 :(得分:1)
有很多方法......我会用linq做的:
var list = new List<int> { a, b, your other numbers};
int n = 3;
int distance = list.Count / n;
var result=list.Where(x=>(list.IndexOf(x) % distance) == 0);
条件可以应用于你不想使用linq的for循环
答案 1 :(得分:1)
我的回答是这些假设:
此方法首先确定间距,然后绘制样本:
IEnumerable<int> GetEvenlySpacedSamples(int startNumber, int count, int sampleCount)
{
// TODO make sure count > 0, sampleCount > 0, and sampleCount <= count
if (sampleCount == 1) return new[] { startNumber };
var spacing = count / (sampleCount - 1); // minus 1 because there is one
// fewer gaps than samples
return Enumerable.Range(0, sampleCount)
.Select(x => startNumber + x * spacing);
}