两个最大值的 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
上一题:
我需要 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