【erlang】练习题0002.lists模块

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).

 


 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章