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

 


 

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