删除Elixir列表中具有连续dupes的元素

时间:2017-07-20 03:45:05

标签: list filter elixir

我在 Elixir 中有一个数字列表,我想删除重复项,但仅限于连续的dupes。

对于以下输入列表:[1,1,2,2,1,1,1,1,3,3,2,2]

结果应该是:[1,2,1,3,2]

1 个答案:

答案 0 :(得分:4)

Enum.dedup/1完全符合您的要求:它只用一个实例替换连续的重复元素,并返回列表中的其余元素。

iex(1)> Enum.dedup([1, 1, 2, 2, 1, 1, 1, 1, 3, 3, 2, 2])
[1, 2, 1, 3, 2]

这适用于与===相等的所有值,包括地图:

iex(2)> Enum.dedup([%{a: 1}, %{a: 2}, %{a: 2}, %{a: 2}])
[%{a: 1}, %{a: 2}]