总结一个元组列表

时间:2013-10-07 02:09:06

标签: haskell sum tuples

我有一个包含整数的元组列表。

[(123,123,123),(123,123,123),(123,123,123)]

我想得到列表中所有第二个值的总和,例如;

[(_,123,_),(_,123,_),(_,123,_)]

123 + 123 + 123

我想我应该使用折叠,但我不确定

3 个答案:

答案 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>每个元组中的值。