此解决方案仅过滤掉列表中的重复项。可能需要建立在它做你想做的事。
删除重复项(列表)->
列表:反向(删除(列表,[]))。
删除([],这个)->这个;
移除([A|Tail],Acc)->
删除(删除全部(A,尾巴),[A|Acc])。
delete_all(Item, [Item | Rest_of_list]) ->
delete_all(Item, Rest_of_list);
delete_all(Item, [Another_item| Rest_of_list]) ->
[另一个项目 | delete_all(Item, Rest_of_list)];
删除全部(_,[])-> []。
编辑
Microsoft Windows [版本 6.1.7601]
版权所有 (c) 2009 Microsoft Corporation。版权所有。
C:\Windows\System32>erl
Eshell V5.9(使用 ^G 中止)
1> 列表 = [1,2,3,4,a,b,e,r,a,b,v,3,2,1,g,{红,绿},d,2,5,6,1 ,4,6,5,{红,绿}]。
[1,2,3,4,a,b,e,r,a,b,v,3,2,1,g,
{红,绿},
d,2,5,6,1,4,6,5,
{红,绿}]
2> 删除重复项(列表)。
[1,2,3,4,a,b,e,r,v,g,{红,绿},d,5,6]
3>