对于F#数组,是否有一种简单的方法可以将排序索引与排序数组一起返回?
与Matlab的sort()
函数一样?
背景:我来自matlab / R,其中操作索引上的数组是必不可少的。
我想重现一些索引函数,并尝试将各种函数中的索引数组作为变量传递。对于这个sort()
函数,一种用法是根据它们中的任何一个对几个对齐的数组进行排序。
也许还有更好的方法可以做到这一点?
答案 0 :(得分:3)
将Array.sort与Array.mapi结合使用。
let arr = [| 14;3;11;2 |]
let sortedWithIndex = arr |> Array.mapi (fun x t -> (t,x)) |> Array.sort
printfn "%A" sortedWithIndex
输出
[|(2, 3); (3, 1); (11, 2); (14, 0)|]
答案 1 :(得分:0)
let sortWithIndex list =
list
|> List.mapi (fun index x -> (x, index))
|> List.sort
(根据F#的版本,List.sort
可能需要比较函数,如`compare)。