我有一个3年以上的降雨文本文件,其中每年的每个数字对应于月份。 例如,在
中2002 1.17 0.78 7.11 5.17 5.84 4.29 1.12 4.06 1.9 2.07 1.47 1.53
2001 1.24 3.22 1.61 3.33 6.55 2.4 3.5 1.32 3.9 6.04 1.69 1.13
2000 1.277 1.4 1.17 5.74 6.48 4.81 4.07 3.19 6.2 1.95 2.65 1.7
2002年的平均降雨量为0.78。
我制作了一个元组列表,格式为(年份,值,平均值,最小值,最大值),其中年份为int,值为浮点列表,average为平均所有值的整数&#39 ;,min是一个持有最小值的int'和最大
我的问题:
我可以使用List.minBy第四个mylist和它来自的年份(因为它的单个元素)打印所有元组中的最小值,但是h ow我是否将该数字与它来的月份相对应从吗
我有
let TupleWithSmallestValue= List.minBy min biglist
let (year,_,_,min,_) = TupleWithSmallestValue
printfn"Min rainfall:\t%A; %A" min year
我正在思考以下几点:
List.map (fun (year,(Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec), avg, min, max) -> somehow print the min and the month it came from )
但我知道这是错的,我试图解决每个值,使其对应一个月,就像我上面的例子一样。如果我的问题很清楚,我该怎么做?我是一名C ++程序员,但我喜欢这种语言的风格。只是缺少一些基础知识。
答案 0 :(得分:1)
这样的事情应该有效:
let months = [ "Jan"; "Feb"; ...; "Dec" ]
let (year, values, _, min, _) = TupleWithSmallestValue
let month = values |> List.mapi (fun i x -> (i, x))
|> List.find (fun (m, v) -> v = min)
|> fst
|> List.nth months