-2

I have a list of tuples containing intergers.

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

I want to get the sum of all the second values of the list eg;

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

123 + 123 + 123

I think i should be using fold but im not sure

4

3 回答 3

5

从元组列表中提取第二个值以获得一个新列表,然后对新列表求和。

Prelude> let a = [(123,123,123),(123,123,123),(123,123,123)]
Prelude> sum [i | (_,i,_) <- a]
于 2013-10-07T04:58:45.383 回答
1

我认为你在正确的轨道上。我试过这个,它似乎工作:

sumSecondTuple list = foldl (\acc (x, y, z) -> (+) y acc) 0 list

这就是说,从值 0 开始,然后将累加值添加到y元组(x, y, z)中所有项目的值中list

于 2013-10-07T02:16:34.117 回答
0

如果您不怕镜片(进口Control.Lens),一种解决方案是

sumsnds = sum . toListOf (traverse . _2)

当您遍历一个元组列表并挑选出每个元组中的第二个值时,这将汇总您获得的列表中的值。

于 2013-10-07T12:18:48.107 回答