1> lists:all(fun(X)->X<4 end,[1,2,3]).
true
2> lists:all(fun(X)->X<4 end,[1,2,3,4]).
false
? ?all(Pred, List)-> boolean()
?如果?Pred(Elem)?对?List?中的所有元素?Elem?返回 true,则返回?true,否则返回?false。Pred?函数必须返回布尔值。
3>lists:any(fun(X)->X<4 end,[1,2,3,4]).
true
4>lists:any(fun(X)->X<4 end,[4,5]).
false
?all(Pred, List)-> boolean()
如果?Pred(Elem)?对列表中的至少一个元素?Elem?返回 true,则返回?true。Pred?函数必须返回一个 布尔。
5> lists:append([[1, 2, 3], [a, b], [4, 5, 6]]).
[1,2,3,a,b,4,5,6]
6> lists:append("abc", "def").
"abcdef"
append(ListOfLists) -> List1
返回一个列表,其中追加了?ListOfLists?的所有子列表。
append(List1, List2) -> List3
返回一个新列表?List3,该列表由?List1?的元素后跟?List2?的元素。
7> lists:concat([doc, '/', file, '.', 3]).
"doc/file.3"
concat(事物)-> string()
连接事物元素的文本表示形式。Things?的元素可以是原子、整数、浮点数或字符串。
40> lists:delete(1,[1,2,3,4]).
[2,3,4]
41> lists:delete(1,[2,3,4]).
[2,3,4]
delete(Elem, List1) -> List2
返回?List1?的副本,其中第一个元素 匹配的 Elem?将被删除,如果有这样的 元素。
8> lists:droplast([1,2,3,4]).
[1,2,3]
9> lists:droplast([]).
** exception error: no function clause matching lists:droplast([]) (lists.erl, line 218)
droplast(列表) -> 初始化列表
删除?List?的最后一个元素。该列表是 为非空,否则函数崩溃并出现function_clause。
10> lists:dropwhile(fun(X)->X<4 end,[1,2,3,4,5,6,7]).
[4,5,6,7]
?dropwhile(Pred, List1) -> List2
从?List1?中删除元素?Elem,而 Pred(Elem)?返回?true?和 返回剩余列表。Pred?函数必须返回一个 布尔。
11> lists:duplicate(5,hello).
[hello,hello,hello,hello,hello]
?duplicate(N, Elem) ->列表
返回包含术语?Elem?的 N?个副本的列表。
filter
13> lists:filter(fun(X)->X<4 end,[1,2,3,4,5,6,7,8]).
[1,2,3]
filter(Pred, List1) -> List2
List2 是?List1?中?Elem?的所有元素的列表,Pred(Elem)?为其返回?true。?Pred?函数必须返回布尔值.
14> lists:filtermap(fun(X)->X<4 end,[1,2,3,4,5,6,7,8]).
[1,2,3]
15> lists:filtermap(fun(X) -> case X rem 2 of 0 -> {true, X div 2}; _ -> false end end, [1,2,3,4,5]).
[1,2]
filtermap(Fun, List1) -> List2
?连续调用?Fun(Elem)?元素?Elem?of?List1.Fun/1?必须返回布尔值或元组?{true, Value}。该函数返回?元素,其中 Fun?返回一个新值,其中?值?true 与?{true, Elem}?同义。
16> lists:flatlength([1,[1,2,[3,4,8]],3,4,5,6]).
10
?flatlength(DeepList)-> Integer() >= 0
等效于?length(flatten(DeepList)),但 效率更高。
17> lists:flatmap(fun(X)->[X,X] end, [a,b,c]).
[a,a,b,b,c,c]
?flatmap(Fun, List1) -> List2
将函数从 A s 转换为?B的列表,以及?A的列表?(List1),并通过将函数应用于?List1?中的每个元素并附加结果列表来生成?B列表。
flatten
18> lists:flatten([1,[1,2,[3,4,8]],3,4,5,6]).
[1,1,2,3,4,8,3,4,5,6]
19> lists:flatten([1,[1,2,[3,4,8]],3,4,5,6],[8,34,11]).
[1,1,2,3,4,8,3,4,5,6,8,34,11]
?flatten(DeepList) ->列表
返回?DeepList?的平展版本。
flatten(DeepList, tail) ->列表
返回?DeepList?的扁平化版本,并追加了 tail?Tail。
20> lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
15
21> lists:foldl(fun(X, Prod) -> X * Prod end, 1, [1,2,3,4,5]).
120
22> P = fun(A, AccIn) -> io:format("~p ", [A]), AccIn end.
#Fun<erl_eval.43.65746770>
23> lists:foldl(P, void, [1,2,3]).
1 2 3 void
24> lists:foldr(P, void, [1,2,3]).
3 2 1 void
?foldl(Fun, Acc0, List) -> Acc1
在列表的连续元素?A?上调用?Fun(Elem, AccIn),开始 使用?AccIn == Acc0。Fun/2?必须返回一个新的累加器,它是 传递到下一个调用。该函数返回 蓄能器。如果列表为 空。
foldr(Fun, Acc0, List) -> Acc1
像foldl/3一样,但 列表从右到左遍历。
foldl/3 是尾递归的,通常优于?foldr/3。
25> lists:join(x, [a,b,c]).
[a,x,b,x,c]
26> lists:join(x, [a]).
[a]
27> lists:join(x, []).
[]
join(Sep, List1) -> List2
在?List1?中的每个元素之间插入?Sep。没有 对空列表和单一实例列表的影响。
28> lists:keydelete(1,1,[{1,hello},{2,key},{3,value}]).
[{2,key},{3,value}]
29> lists:keydelete(1,1,[{2,key},{3,value}]).
[{2,key},{3,value}]
keydelete(Key, N, TupleList1) -> TupleList2
返回?TupleList1?的副本,其中第一个 出现第?N个元素比较的元组 等于?Key,如果存在这样的元组,则删除。
30> lists:keyfind(1,1,[{1,hello},{2,key},{3,value}]).
{1,hello}
31> lists:keyfind(1,1,[{2,key},{3,value}]).
false
keyfind(Key, N, TupleList) ->元组 |假
在元组?TupleList?列表中搜索 第?N个元素比较等于?Key?的元组。 如果找到这样的元组,则返回元组, 否则为 false。
32> Fun = fun(Atom) -> atom_to_list(Atom) end.
#Fun<erl_eval.44.65746770>
33> lists:keymap(Fun, 2, [{name,jane,22},{name,lizzie,20},{name,lydia,15}]).
[{name,"jane",22},{name,"lizzie",20},{name,"lydia",15}]
?keymap(Fun, N, TupleList1) -> TupleList2
返回一个元组列表,其中,对于?TupleList1?中的每个元组,元组的第?N个元素?Term1?已替换为调用?Fun(Term1)?的结果。
34> lists:keymember(1,1,[{1,hello},{2,key},{3,value}]).
true
35> lists:keymember(1,1,[{2,key},{3,value}]).
false
keymember(Key, N, TupleList) ->boolean()
如果?TupleList?中有一个元组,其第?N个元素,则返回?true?compares 等于?Key,否则为?false。
?
36> lists:keymerge(1,[{2,key},{3,value}],[{1,hello},{2,tuple},{3,none}]).
[{1,hello},{2,key},{2,tuple},{3,value},{3,none}]
keymerge(N, TupleList1, TupleList2) -> TupleList3
返回通过合并 TupleList1 和?TupleList2?形成的排序列表。 合并是在每个元素的第 N个元素上执行的 元。在计算之前,必须对 TupleList1 和?TupleList2?进行键排序?此功能。当两个元组比较相等时,在 TupleList1?中的元组之前选取?TupleList2?中的元组。
38> lists:keyreplace(2,1,[{2,key},{3,value}],{1,hello}).
[{1,hello},{3,value}]
39> lists:keyreplace(1,1,[{2,key},{3,value}],{1,hello}).
[{2,key},{3,value}]
keyreplace(Key, N, TupleList1, NewTuple) -> TupleList2
?返回?TupleList1?的副本,其中第一个 出现一个?T?元组,其第?N个元素 如果存在这样的元组?T,则将等于?Key?替换为?NewTuple。