我想将[z,z,a,z,z,a,a,z]
转换为[{z,2},{a,1},{z,2},{a,2},{z,1}]
。我该怎么做?
所以,我需要积累以前的值,它的计数器和元组列表。
我创造了
-record(acc, {previous, counter, tuples}).
重新定义
listToTuples([]) -> [];
listToTuples([H | Tail]) ->
Acc = #acc{previous=H, counter=1},
listToTuples([Tail], Acc).
但是我有一些麻烦
listToTuples([H | Tail], Acc) ->
case H == Acc#acc.previous of
true ->
false ->
end.
3条答案
按热度按时间iq0todco1#
如果您反向构建答案(Acc),则前一个将是列表头。
我会这么做
fcy6dtqo2#
我将继续在道路上建立反向列表。注意第一行上X上的模式匹配。
inn6fuwd3#
我个人会使用
lists:foldr/3
或者用类似的东西手工完成:使用两个累加器可以避免为列表中的每个元素构建和分离元组的不必要操作。我觉得这样写更清楚。