Functional programming 从两个列表中筛选元素

Functional programming 从两个列表中筛选元素,functional-programming,erlang,otp,concurrent-programming,Functional Programming,Erlang,Otp,Concurrent Programming,基本上我有两个类似的列表 L1 = [one, two, three, five, eleven, million] L2 = [five, million] 所以我想从第二个列表中筛选元素 得到 [one, two, tree, eleven] 我已经使用foldl函数来循环L1,然后使用foreach循环来决定要从列表2中添加的元素,但是我似乎没有正确的逻辑:我有这样的东西 56 filter_a(L1,L2) -> 57 List = foldl(fun(X,A) -&g

基本上我有两个类似的列表

L1 = [one, two, three, five, eleven, million]
L2 = [five, million]
所以我想从第二个列表中筛选元素

得到

[one, two, tree, eleven]
我已经使用foldl函数来循环L1,然后使用foreach循环来决定要从列表2中添加的元素,但是我似乎没有正确的逻辑:我有这样的东西

56 filter_a(L1,L2) ->
 57    List = foldl(fun(X,A) ->
 58                 L = lists:foreach(fun(E) ->
 59                             case E =:= X of
 60                                 true ->
 61                                     [];
 62                                 _-> 
 63                                     X
 64                             end 
 65                     end, L2),
 66                 lists:append([A,[L]])
 67         end, [], L1),
 68    List.

如何以简单的方式执行此操作?

您可以使用列表理解:

filter_a(L1,L2) ->
    [ X || X <- L1, lists:member(X,L2) =/= true ]. 
过滤器a(L1,L2)->

[X | | X您可以使用列表理解:

filter_a(L1,L2) ->
    [ X || X <- L1, lists:member(X,L2) =/= true ]. 
过滤器a(L1,L2)->
[X | | X为什么不仅仅是
L1--L2
?复杂性是相同的O(N*M)。

为什么不仅仅是
L1--L2
?复杂性是相同的O(N*M)