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

 


 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值