从列表中删除重复的合作伙伴值

Gel*_*ang 1 elixir

我知道在 Elixir 中要从列表中删除重复值,您需要使用Enum.uniq(my_list).

给定一个列表,列出[1, 1, 2, 3, 3, 4, 5]我将使用什么来获得结果[2, 4, 5]。有没有办法不使用嵌套循环?

Ada*_*hip 5

您可以使用Enum.frequencies/1来计算每个元素有多少个,然后只取出出现一次的项目:

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

或者,从链接的问题中,您可以使用相当晦涩的:

list = [1, 1, 2, 3, 3, 4, 5]
uniq = Enum.uniq(list)
uniq -- list -- uniq
Run Code Online (Sandbox Code Playgroud)