我有一个包含整数的元组列表。
[(123,123,123),(123,123,123),(123,123,123)]
我想得到列表中所有第二个值的总和,例如;
[(_,123,_),(_,123,_),(_,123,_)]
123 + 123 + 123
我想我应该使用折叠,但我不确定
答案 0 :(得分:5)
从元组列表列表中提取第二个值以获取新列表,然后对新列表求和。
Prelude> let a = [(123,123,123),(123,123,123),(123,123,123)]
Prelude> sum [i | (_,i,_) <- a]
答案 1 :(得分:1)
我认为你走在正确的轨道上。我试过这个似乎有效:
sumSecondTuple list = foldl (\acc (x, y, z) -> (+) y acc) 0 list
这样说,从值0开始,然后将累计值添加到元组y
中(x, y, z)
中list
中{{1}}的所有项目。
答案 2 :(得分:0)
如果你不害怕镜片(导入Control.Lens
),一个解决方案就是
sumsnds = sum . toListOf (traverse . _2)
汇总 列表中的值遍历元组列表并选择 second < / strong>每个元组中的值。