两个最大值的 F# int 列表

F# int list of two maximums

上一题:

我需要 return 两年的整数列表,其中给定年份是数据集中任何二月降雨量最大的年份。

到目前为止,我已经找到了使用 List.maxBy 的第一年,但我相信这只会是 return 的第一个最大值。

let rainfall
    ds |> List.filter (fun s-> month(s)=2)
       |> List.maxBy rain
       |> year

那么如何同时显示第一个和第二个?

使用 List.sort 提供按雨降序排序并取前 2 个元素的功能

您可能应该将它们降序排列:

let rainfall
    ds |> Seq.filter (fun s-> month(s)=2)
       |> Seq.sortBy (fun m -> -(rain m)) //Sort by the value of rain negated
       |> Seq.take 2
       |> Seq.toList

然后只取前2个。

这将为您列出 2 项,降雨量最多的一项和第二多的一项。

如果您希望它们作为单独的值,您可以这样做:

let most = ds |> List.nth 0
let secondMost = ds |> List.nth 1