如何从Erlang中的列表中删除副本?
假设我有一个列表,如:
[1,1,2,3,4,5,5,6]
Run Code Online (Sandbox Code Playgroud)
我怎样才能得到:
[1,2,3,4,5,6]
Run Code Online (Sandbox Code Playgroud)
小智 37
你可以使用sets,例如:
my_nonDuplicate_list1() ->
List = [1,1,2,3,4,5,5,6],
Set = sets:from_list(List),
sets:to_list(Set).
Run Code Online (Sandbox Code Playgroud)
这将返回[1,2,3,4,5],不再重复,但很可能没有排序.
没有使用的另一种可能性sets是:
my_nonDuplicate_list2() ->
List = [1,1,2,3,4,5,5,6],
lists:usort(List).
Run Code Online (Sandbox Code Playgroud)
在这种情况下,它返回[1,2,3,4,5],不再重复和排序.
exp*_*boy 14
对于那些希望保留列表顺序的人:
remove_dups([]) -> [];
remove_dups([H|T]) -> [H | [X || X <- remove_dups(T), X /= H]].
Run Code Online (Sandbox Code Playgroud)