gpt4 book ai didi

haskell - 如何对列表列表的相同索引求和?

转载 作者:行者123 更新时间:2023-12-03 14:31:42 26 4
gpt4 key购买 nike

如何总结一个列表列表,其中所有值都在 a 索引处?
例如:

let k = [ [1,1,1], [2,2,2], [3,3,3] ]
sumFoo k
> [ 6, 6, 6]

我知道我可以将两个列表总结为:
zipWith (+) [1,2,3] [2,3,4]
但是列表列表呢?我试过类似的东西:
foldr (\xs ys -> zipWith (+) xs ys) [] k
但这给了我一个空列表!

最佳答案

要回答 OP 问题:

foldl1 (zipWith (+)) k

应该做的伎俩。 Foldl1 以列表的第一个元素作为累加器值开始,这正是你想要的。

如果您愿意,您还可以使用 zipWith3、zipWith4、.... 一直到 7。

-----------求总和 ------

您首先要对列表的每个元素(即每个嵌套列表)映射 sum,然后对结果运行 sum。

所以:
sum . map sum $ k

就是这样!

如果您不熟悉 .或 $ 语法 - $ 是函数应用程序,但是右结合的(省去括号),而 .是函数组合。

关于haskell - 如何对列表列表的相同索引求和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9538584/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com