【问题标题】:How to retrieve element of an array which are at every Xth position?如何检索位于每个第 N 个位置的数组元素?
【发布时间】:2012-11-04 20:50:07
【问题描述】:

在 C# 4.0 中,如果 element + k 的位置是 n 的倍数,是否有办法将 double[] 的每个元素提取到另一个数组中?即如果k3 并且n4,我想从数组a1 创建一个数组a2 与第3、第7、第11 ......位置(所以在C# 中因为数组从0 开始,将是a1[2]a1[6]a1[10] ...等)

我有兴趣在 C# 的性能方面以最快的方式实现这一目标,并且我知道如何使用 for 循环来做到这一点。

【问题讨论】:

  • 这是我当然会使用for 循环的东西。我不确定这个练习的目的是什么,但我确信没有内置的东西可以做到这一点。
  • 您为什么期望比使用循环更快?好像不是特别常见的操作……
  • 可以使用Where LINQ方法。
  • @OndraMorský:这个 Where 请求的语法是什么?
  • 这里有一些方法细节:msdn.microsoft.com/en-us/library/bb549418.aspx。您必须使用带 (index, item) 参数的 where 方法,并根据索引返回 true(包含在结果中)或 false。

标签: c# arrays


【解决方案1】:

我认为没有比使用 for 循环更快的方法了。无论如何,有可能在IEnumerable 上使用Linq 操作,例如Where

double[] doubleArray = {10.0,3.0,5.0,6.0};
IEnumerable<double> = doubleList.Where((number,index) => number + index % n == 0 );

我不确定我是否理解您想要满足的条件。无论如何,用所需的方法替换匿名方法体。

【讨论】:

  • 为什么要明确执行 ToList()?
  • @LightStriker:谢谢...我不知道数组已经实现了 IEnumerable。
  • 我想他的意思是(index - k) % n == 0
猜你喜欢
  • 2023-03-19
  • 2023-03-13
  • 2021-10-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-16
  • 2020-07-21
  • 1970-01-01
相关资源
最近更新 更多