如何计算Elixir中列表的累计金额?

Nat*_*ate 2 reduce elixir cumulative-sum

我有一个组列表:

[[10, 1], [11, 1], [13, 3], [15, 10]]

我需要计算它们的累积总和,得到:

[[10, 1], [11, 2], [13, 5], [15, 15]].

一直在尝试,Enum.reduce但我还不知道如何将新列表作为累加器返回,我应该采取列表的尾部来获取最后一组并从中获取最后一个数量还是有更好的方法?

Dog*_*ert 5

这是一个完美的用例,Enum.scan/2因为你想收集每个减少的价值:

[[10, 1], [11, 1], [13, 3], [15, 10]]
|> Enum.scan(fn [a, b], [_c, d] ->
  [a, b + d]
end)
|> IO.inspect
Run Code Online (Sandbox Code Playgroud)

输出:

[[10, 1], [11, 2], [13, 5], [15, 15]]
Run Code Online (Sandbox Code Playgroud)