解析嵌套列表 F# 困惑
Parsing nested list F# confused
我有一个 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 年 2 月的平均降雨量为 0.78。
我制作了一个元组列表,格式为 (year,values,average,min,max),其中 years 是 int,values 是一个 float 列表,average 是一个 int,对所有 'values' , min 是一个 int 持有最小 'value' 和 max.
我的问题:
我能够使用 List.minBy 第四个 mylist 和它来自的年份(因为它的单个元素)打印所有元组中的最小值,但是 h 我如何对应它来自的月份的数字?
我有
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++ 程序员,但我喜欢这种语言的风格。只是缺少一些基础知识。
像这样的东西应该可以工作:
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
我有一个 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 年 2 月的平均降雨量为 0.78。
我制作了一个元组列表,格式为 (year,values,average,min,max),其中 years 是 int,values 是一个 float 列表,average 是一个 int,对所有 'values' , min 是一个 int 持有最小 'value' 和 max.
我的问题:
我能够使用 List.minBy 第四个 mylist 和它来自的年份(因为它的单个元素)打印所有元组中的最小值,但是 h 我如何对应它来自的月份的数字?
我有
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++ 程序员,但我喜欢这种语言的风格。只是缺少一些基础知识。
像这样的东西应该可以工作:
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