1.对列表里每一个数 * 2
给出一个列表L = [1,2,3,4].返回[2,4,6,8]
做法多样,这里给出lists模块的map函数使用方法
学习难点:
掌握lists模块map方法。
map方法源代码
map(_,[]) ->[];
map(F,[H|T])->[F(H)|map(F,T)].
解决思路:
L = [1,2,3,4].
lists:map(fun(X) -> 2*X end,L).
2.筛除列表里2的倍数的数
给出一个列表L = [1,2,3,4].返回[1,3]
做法多样,这里给出lists模块的filter函数使用方法
学习难点:
掌握lists模块filter方法。
解决思路:
L = [1,2,3,4].
lists:filter(fun(X) -> (X rem 2) =/= 0 end,L).
同样的,要拿到2的倍数的数
L = [1,2,3,4].
lists:filter(fun(X) -> (X rem 2) =:= 0 end,L).
3.A、B列表的交集
给出一个列表A = [1,2,3,7]. B = [1,7,9,23] 返回[1,7]
做法多样,这里给出lists模块的member函数使用方法
学习难点:
掌握member、filter
解决思路:
-module(mylists).
-import(lists,[member/2,filter/2]).
-export([ab_and/2]).
%%取A、B列表交集
ab_and(A,B) -> filter( fun(Item) -> member(Item,B) end ,A).
同样的,假设B为全集,对A求补集只需加入not即可。
ab_and(A,B) ->
filter(
fun(Item)->
not member(Item,B)
end
,A).