Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
785 views
in Technique[技术] by (71.8m points)

elixir - 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?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)

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

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...