List.Sort
从低到高对列表进行排序 - 如何从高到低排序?这有什么样的库函数吗?
答案 0 :(得分:6)
有关数字列表:
list
|> List.sortBy (fun x -> -x)
函数(fun x -> -x)
否定了数字,因此颠倒了顺序。
对于一般的可比较广告,请将List.sortWith
与compare
一起使用。观察a b
中compare
的排序:
> List.sortWith (fun a b -> compare a b) ["a";"s";"d";"f"];;
val it : string list = ["a"; "d"; "f"; "s"]
> List.sortWith (fun a b -> compare b a) ["a";"s";"d";"f"];;
val it : string list = ["s"; "f"; "d"; "a"]
答案 1 :(得分:5)
如果您查看了链接的帖子F# Seq.sortBy in descending order,则在使用List.sortBy (fun x -> -x)
时可能会出现溢出。为了正确,它应该是:
List.sortBy (fun x -> -x-1)
在F#4.0(Visual Studio 2015预览版附带)中,出于此目的,有sortDescending/sortByDescending
个函数。
您可以使用
list
|> List.sortDescending
或
list
|> List.sortByDescending id
请参阅https://github.com/fsharp/FSharpLangDesign/blob/master/FSharp-4.0/ListSeqArrayAdditions.md的新核心库函数的完整列表。
答案 2 :(得分:1)
您可以使用List.sortBy
按自定义函数排序,并使用一元减号运算符~-
作为紧凑表示法中的函数:
let list = [1..10]
list |> List.sortBy (~-)