2

リスト内の要素の合計を同じ位置に配置するにはどうすればよいですか?例えば:

[[2,3,4],[5,6,7],[8,9,10]]=[15,18,21]

ありがとう

4

3 に答える 3

2

試す:

sumIn :: Num a => [[a]] -> [a]
sumIn = foldl (zipWith (+)) (repeat 0)

引数が空のリストの場合、結果はゼロの無限のリストになることに注意してください。したがって、たとえば、このケースを個別に処理することをお勧めします。

sumIn :: Num a => [[a]] -> [a]
sumIn [] = []
sumIn xs = foldl (zipWith (+)) (repeat 0) xs
于 2012-12-06T10:39:01.973 に答える
2

リストを転置して、結果の各リストを合計することができます。

ghci> import Data.List (transpose)
ghci> map sum $ transpose [[2,3,4],[5,6,7],[8,9,10]]
[15,18,21]

他のソリューションとは異なり、これは不均一な長さのリストに対して機能します。

于 2012-12-06T10:40:20.050 に答える
2

GHCiの例を次に示します。

λ> let xs = [[2,3,4],[5,6,7],[8,9,10]]
λ> foldr1 (zipWith (+)) xs
[15,18,21]
于 2012-12-06T10:42:13.420 に答える