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