F# 获取具有特定值的数组元素的索引
假设我有一系列选项,如F# 获取具有特定值的数组元素的索引,f#,F#,假设我有一系列选项,如[| Some 1;Some0;None;None;Some0}] 我将得到具有None值的元素的索引,在这种情况下,正确的答案是[| 2;3 |] 我目前的想法是将数组更改为列表,然后使用递归函数抛出它,但在这种情况下,我需要可变值来计算索引,我不想使用可变值 还有其他解决方案吗这里有另一个解决方案: [|Some 1;Some 0;None;None;Some 0|] |> Array.indexed |> Array.filter (fun
[| Some 1;Some0;None;None;Some0}]
我将得到具有None
值的元素的索引,在这种情况下,正确的答案是[| 2;3 |]
我目前的想法是将数组更改为列表,然后使用递归函数抛出它,但在这种情况下,我需要可变值
来计算索引,我不想使用可变值
还有其他解决方案吗这里有另一个解决方案:
[|Some 1;Some 0;None;None;Some 0|]
|> Array.indexed
|> Array.filter (fun (i, x) -> x.IsNone)
|> Array.map fst
作为一种优化,最后2行可以用单个|>数组代替。选择(函数(i,None)->一些i | |->None)
下面是使用序列表达式的另一种方法:
let x = [|Some 1;Some 0;None;None;Some 0|]
[|for i = 0 to x.Length-1 do
if x.[i].IsNone then yield i|]
谢谢,我不知道这个索引方法