Gelo Chang
Gelo Chang

Reputation: 125

Remove duplicate partner values from a list

I know that in elixir to remove duplicate values from a list, you need to use Enum.uniq(my_list).

Given a list of [1, 1, 2, 3, 3, 4, 5] what will I use for the outcome to be [2, 4, 5]. Is there a way not to use nested loops?

Upvotes: 1

Views: 335

Answers (1)

Adam Millerchip
Adam Millerchip

Reputation: 23091

You can use Enum.frequencies/1 to calculate how many of each element there are, and then only take items that appear once:

[1, 1, 2, 3, 3, 4, 5]
|> Enum.frequencies()
|> Enum.filter(&match?({_, 1}, &1))
|> Enum.map(&elem(&1, 0))

Or, from the linked question, you can use the rather obscure:

list = [1, 1, 2, 3, 3, 4, 5]
uniq = Enum.uniq(list)
uniq -- list -- uniq

Upvotes: 5

Related Questions