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)