Reputation: 125
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
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