我有一个元组列表,我想计算出平均值: (所有int的总和)/列表长度
列表如下:
[("Student1", 1), ("Student2", 2), ("Student3", 3)]
到目前为止,我有一个功能可以添加所有'年龄'(1,2和3),但我不知道如何将其与列表长度的分区相结合。
功能:
addMarks :: [(String, Int)] -> Int
addMarks list = sum . map snd / length(list)
长度(列表)给了我3,所以如果我可以将sum函数除以长度,我将得到我的平均值。
没有lamda表达式,如果你可以,
谢谢! 汤姆
答案 0 :(得分:2)
如果您希望将结果放在div
中,请使用Int
功能。使用/
会得到一个小数结果。这段代码应该有效:
addMarks :: [(String, Int)] -> Int
addMarks list = sum (map snd list) `div` length(list)
或更清洁的版本:
addMarks :: [(String, Int)] -> Int
addMarks list = sum nums `div` length nums
where nums = map snd list
您也可以使用/
功能来解决此问题。然后,您必须使用fromIntegral
之类的函数将它们转换为正确的类型。