首页 > 解决方案 > 获取 F# 中布尔数组中特定位置的索引值

问题描述

我有一个仅包含0and的数组1。让我们调用这个数组numbersnumbers看起来像这样:

val it : int [] =
  [|1; 1; 1; 1; 0; 1; 0; 1; 0; 0; 0; 1; 0; 1; 0; 0; 0; 1; 0; 1; 0; 0; 0; 1; 0;
   0; 0; 0; 0; 1; 0; 1; 0; 0; 0; 0; 0; 1; 0; 0; 0; 1; 0; 1; 0; 0; 0; 1; 0; 0;
   0; 0; 0; 1; 0; 0; 0; 0; 0; 1; 0; 1; 0; 0; 0; 0; 0; 1; 0; 0; 0; 1; 0; 1; 0;
   0; 0; 0; 0; 1; 0; 0; 0; 1; 0; 0; 0; 0; 0; 1; 0; 0; 0; 0; 0; 0; 0; 1; 0; 0;
   ...|]

我想检索1发生的索引的值。例如,在上述数组中,索引01235具有1。我想要一个看起来像这样的数组[| 0; 1; 2; 3; 5; ... |]:我怎样才能做到这一点?

标签: f#

解决方案


[| 1; 0; 1; 1; 0 |]
|> Array.indexed
|> Array.choose (function (i, n) when n = 1 -> Some i | _ -> None)
// 0; 2; 3

推荐阅读