可能重复:
拆分列表并从子列表中求和?
我试图解决这个问题。我需要对列表中的元素进行总和,这些元素仅用“0”相互分隔。例如,我可以有这样的输入:[1,2,3,0,3,4,0,2,1],输出应该是 [6,7,3]。
到目前为止,我设法做这样的事情:
cut (x:xs) | x > 0 = x : (cut xs)
| otherwise = []
first (xs) = ( (foldl (+) 0 (cut (xs))) ) : []
second (xs) = ( (foldl (+) 0 (cut (reverse (xs)))) ) : []
test (xs) = first(xs) ++ second(xs)
问题是这只适用于我的列表中只有 1 个“0”实例。
我试图通过编辑我的剪切功能来解决这个问题:
cut [] = []
cut (x:xs) | x > 0 = foldl (+) 0 ( x : cut xs) : []
| x == 0 = (cut xs)
但我不知道如何调整它,所以它会将总和分开。现在它只是将所有元素的总和作为输出。