2017-07-20 48 views
0

我有一個Elixir中的數字列表,我想刪除重複項,但僅限於連續投擲。刪除在Elixir列表中連續投擲的元素

對於以下輸入列表:[1,1,2,2,1,1,1,1,3,3,2,2]

結果應該是:[1,2,1,3,2]

+5

'Enum.dedup/1'? – Dogbert

+0

不錯,我意識到'Enum.dedup_by/2'在我的情況下效果更好,因爲列表中的值將是'Map'而不是'Integer' –

+0

你想寫一個答案@Dogbert? – narrowtux

回答

2

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}]