Erlang lists模块使用

目录

lists:keystore/4

lists:foldl/3

lists:keytake/3

lists:keyfind/3


lists:keystore/4

在元组列表里存储一个值

用法:

keystore(Key, N, TupleList1, NewTuple) -> TupleList2

从元组列表 TupleList1 里查找元组的第 N 个值跟 Key 是一样的元素,如果找到则用新元组替换,并返回一个新的元组列表 TupleList1,找不到则在原来的元组列表 TupleList1 后面加上新的元组

1.

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],
lists:keystore(b, 1, TupleList, {b, 22}).

运行结果:

[{a,1},{b,22},{c,3},{d,4}]

2.

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],
lists:keystore(2, 2, TupleList, {b, 22}).

运行结果:

[{a,1},{b,22},{c,3},{d,4}]

3.

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],
lists:keystore(e, 1, TupleList, {e, 5}).

[{a,1},{b,2},{c,3},{d,4},{e,5}]


lists:foldl/3

列表里的元素递归调用函数

用法:

foldl(Fun, Acc0, List) -> Acc1

列表 List 里的每一个元素按从左向右的顺序,依次跟一个累积器(accumulator)参数 Acc0 作为 Fun 的参数被调用执行,并返回一个新的累积器 Acc1 跟列表的下一个元素调用,直到调用完列表里的所有元素,最终返回累积器 Acc 的结果值。

例1.

lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1, 2, 3, 4, 5]).

运行结果:

15

例2.

lists:foldl(fun(X, {Prod1, Prod2}) -> {X + Prod1, X * Prod2} end, {0, 1}, [1, 2, 3, 4, 5]).

运行结果:

{15,120}


lists:keytake/3

从元组列表里提取一个元素

用法:

1

keytake(Key, N, TupleList1) -> {value, TupleTupleList2} | false

从元组列表 TupleList 里查找元组的第 N 个值跟 Key 是一样的元素,如果找到这个元素,则把这个元素从列表里提取出来,最后返回被提取的元素和提取后的元组列表

1

2

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],

lists:keytake(b, 1, TupleList).

运行结果:

{value,{b,2},[{a,1},{c,3},{d,4}]}


lists:keyfind/3

在一个元组列表里查找一个元素

用法:

1

keyfind(Key, N, TupleList) -> Tuple | false

从元组列表 TupleList 里查找元组的第 N 个值跟 Key 是一样的元素。

1

2

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],

lists:keyfind(b, 1, TupleList).

运行代码{b,2}

只找第一个匹配到的元素,后面有相同的不做处理。

1

2

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}, {b, 5}],

lists:keyfind(b, 1, TupleList).

运行代码{b,2}

找不到则返回 false。

1

2

TupleList = [{a, 1}, {b, 2}, {c, 3}, {d, 4}],

lists:keyfind(e, 1, TupleList).

运行代码false


lists:member/2

判断元素是否是列表里的成员

用法:

1

member(ElemList) -> bool()

判断元素是否是列表里的成员

1

lists:member(c, [a, b, c, d, e]).

运行代码true

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值