如何在同一位置列表中的元素总和? 例如:
[[2,3,4],[5,6,7],[8,9,10]]=[15,18,21]
由于
答案 0 :(得分:2)
尝试:
sumIn :: Num a => [[a]] -> [a]
sumIn = foldl (zipWith (+)) (repeat 0)
请注意,如果参数是空列表,则结果是无限的零列表。因此,您可能希望单独处理此案例,例如
sumIn :: Num a => [[a]] -> [a]
sumIn [] = []
sumIn xs = foldl (zipWith (+)) (repeat 0) xs
答案 1 :(得分:2)
您可以转置列表,并对结果中的每个列表求和:
ghci> import Data.List (transpose)
ghci> map sum $ transpose [[2,3,4],[5,6,7],[8,9,10]]
[15,18,21]
与其他解决方案不同,这适用于非均匀长度的列表。
答案 2 :(得分:2)
这是GHCi中的一个例子:
λ> let xs = [[2,3,4],[5,6,7],[8,9,10]]
λ> foldr1 (zipWith (+)) xs
[15,18,21]