基本上我有两个类似
的列表L1 = [one, two, three, five, eleven, million]
L2 = [five, million]
所以我想过滤第二个列表L2中的元素
获取
[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.
我怎样才能以一种简单的方式做到这一点?
答案 0 :(得分:3)
为什么不只是L1 -- L2
?复杂度与O(N * M)相同。
答案 1 :(得分:2)
您可以使用列表理解:
filter_a(L1,L2) ->
[ X || X <- L1, lists:member(X,L2) =/= true ].