Finding Elements in One Array but Not Another
From Erlang Community
Problem
You want to find elements that are in one list but not another.
Solution
You want to find elements in list A that aren't in list B. Erlang provides several ways of doing this:
Use lists:subtract/2 , or the equivalent -- operator.
1> A = lists:seq(1,16). [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16] 2> B = lists:seq(2,16,2). [2,4,6,8,10,12,14,16]. 3> lists:subtract(A,B). [1,3,5,7,9,11,13,15] 4> A -- B. [1,3,5,7,9,11,13,15] |
Iterate over the two lists
You can iterate over the two lists, and filter out any entries from list A that are also members of list B.
5> lists:foldr(fun(X,Acc) -> Y=lists:member(X, B), 5> if Y -> [X|Acc]; 5> true -> ACC 5> end end, [], A). [1,3,5,7,9,11,13,15] 6> lists:filter(fun (X) -> not lists:filter(X,B) end, A). [1,3,5,7,9,11,13,15] |

Digg It
Del.icio.us
Reddit
Facebook
Stumble Upon
Technorati

