`
qqdenghaigui
  • 浏览: 120449 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

erlang lists操作

 
阅读更多

-。- 收集的。官方doc也不尽详细呢。。


一,带函数Pred
1, all(Pred, List) -> boolean()
如果List中的每个元素作为Pred函数的参数执行,结果都返回true,那么all函数返回true,
否则返回false

例子:

lists:all(fun(E) -> true end,[1,2,3,4]).

结果

true


2, any(Pred, List) -> boolean()
如果List中至少有一个元素作为Pred函数的参数执行,结果返回true,那么any函数返回true,
否则返回false

例子

lists:any(fun(E) -> is_integer(E) end,[q,2,a,4]).

结果

true

 

3,dropwhile(Pred, List1) -> List2
将List1列表中的元素作为参数执行Pred函数,如果返回true,将其丢弃,最后返回剩余元素
组成的列表

例子

lists:dropwhile(fun(E) -> is_atom(E) end,[a,1,2,a,b]).

结果

[1,2,a,b]

4,filter(Pred, List1) -> List2
返回一个列表,这个列表是由List1中执行Pred函数返回true的元素组成。

lists:filter(fun(E) -> is_integer(E) end,[q,2,a,4]).

结果:

[2,4]

 

5,map(Fun, List1) -> List2
将List1中的每个元素去在Fun中执行,然后返回一个元素,最后返回的这些元素组成一个列表,
返回给List2
例子:
lists:map(fun(X)->[X,X] end, [a,b,c]).
结果:[[a,a],[b,b],[c,c]]

 

6,flatmap(Fun, List1) -> List2
这个函数和map比较类似,相当于执行了
lists:append(lists:map(List1)).
也就是把map的结果进行append处理
例子:
lists:flatmap(fun(X)->[X,X] end, [a,b,c]).
结果:[a,a,b,b,c,c]

 

7,foldl(Fun, Acc0, List) -> Acc1
Fun这个函数有两个参数
第一个参数是List中的元素,第二个参数是Fun函数执行完后的返回值,这个参数第一次执行时

就是Acc0

##感觉原文这里表达有点问题,比较适合的说法应该是当List为空后,返回值是AccN(第二个参数),

lists:foldl源码:

foldl(F, Accu, [Hd|Tail]) ->
    foldl(F, F(Hd, Accu), Tail);
foldl(F, Accu, []) when is_function(F, 2) -> Accu.


例子:对[1,2,3,4,5]求和
lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
结果:15
执行过程:首先,Fun第一次执行时,X的值取列表List的第一个元素1,Sum取0,
  Fun第二次执行时,X的值取列表List的第二个元素2,Sum取Fun第一次的返回值
  依次轮推,直到List中每个元素执行完,最后foldl返回最后一次的结果。

 

8,foldr(Fun, Acc0, List) -> Acc1
foldr这个函数和foldl比较相似
不过是Fun执行时,X的值先取List的最后一个,然后取倒数第二个。

 

9,foreach(Fun, List) -> ok
以List中的每个元素为参数执行Fun函数,执行顺序按照List中元素的顺序,这个函数最后返回ok。是单边的
例子 lists:foreach(fun(X)->
  %%using X to do somethings 
  %%
  end,List)

 

10,keymap(Fun, N, TupleList1) -> TupleList2
对TupleList1中的每个元素的第N项作为参数在Fun中处理,然后这个第N项最后就被替换为Fun执行完返回的值
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
lists:keymap(fun(X)-> 
  list_to_atom(X) 
  end,2,List1).
结果:
[{name,zhangjing},{name,zhangsan}]

 

11,mapfoldl(Fun, Acc0, List1) -> {List2, Acc1}
这个函数等于是把map和foldl函数结合起来。将List1中的每一个元素执行Fun函数,执行后花括号的第一个值作为返回值返回,
第二个值作为参数传给Fun,作为下一次用。
例子:
lists:mapfoldl(fun(X, Sum) -> {2*X, X+Sum} end,
0, [1,2,3,4,5]).
{[2,4,6,8,10],15}

 

12,mapfoldr(Fun, Acc0, List1) -> {List2, Acc1}
这个函数相当于将map和foldr结合起来


13,merge(Fun, List1, List2) -> List3
这个函数的功能也是把List1和List2合并到一起,只不过是List1和List2的元素要作为参数在Fun中执行,如果
Fun返回true,那么返回值就是List1在前,List2在后。否则,反之。
例子
lists:merge(fun(A,B)-> false end, [3,4],[2,1]).
结果
[2,1,3,4]

 

14,partition(Pred, List) -> {Satisfying, NotSatisfying}
这个函数的功能是将List分成两个List1和List2,List1是将List元素作为参数去Pred函数中执行返回true的元素组成,
List2由Pred返回false的元素组成。
注意,返回的是一个元组
例子
lists:partition(fun(A) -> A rem 2 == 1 end, [1,2,3,4,5,6,7]).
结果
{[1,3,5,7],[2,4,6]}


15,sort(Fun, List1) -> List2
如果Fun函数返回true,则排序是从小到大的顺序,否则,从大到小。
其中Fun有两个参数。
例子
lists:sort(fun(A,B)-> false end,[1,2,3]).
结果
[3,2,1]


16,splitwith(Pred, List) -> {List1, List2}
将List分成List1和List2,
List1由List中元素在Pred函数返回true的组成,但是有一点,如果遇到为false的,则将剩下的元素
全部放到List2中,List1中就只有前面为true的。
例子
lists:splitwith(fun(A) -> is_atom(A) end, [a,b,1,c,d,2,3,4,e]).
结果
{[a,b],[1,c,d,2,3,4,e]}


17,takewhile(Pred, List1) -> List2
List1中的元素element依次执行Pred(element),如果返回true,则获取这个元素,直到有元素执行Pred(element)返回false
例子
lists:takewhile(fun(E)-> is_atom(E) end,[a,b,1,e,{c},[d]]).
结果
[a,b]


18,umerge(Fun, List1, List2) -> List3
这个函数和merge不同的是 当Fun返回true时,返回的List3中不能出现相同的元素
疑问:但是当Fun返回false时,List3中可以有相同的元素。
例子(Fun返回true的情况)
lists:umerge(fun(A,B)-> true end,[1,2],[2,3]).
结果
[1,2,3]
(Fun为false的情况)
lists:umerge(fun(A,B)-> false end,[1,2],[2,3]).
[2,3,1,2]
好神奇,竟然2有重复

 

19,usort(Fun, List1) -> List2
按照Fun函数进行排序,如果Fun返回true,那么只返回List1的第一个元素
如果Fun返回false,那么List1从大到小排序
例子1
lists:usort(fun(A,B) -> true end, [1,2,2,3,4]).
结果
[1]

例子2
lists:usort(fun(A,B) -> false end, [1,2,2,3,4]).
结果
[4,3,2,2,1]


20,zipwith(Combine, List1, List2) -> List3
将List1和list2中的每个元素执行Combine函数,然后返回一个元素,List3就是由Combine函数返回的一个个元素组成的。
功能和map有点像,但是这里是对两个列表的操作。
例子
lists:zipwith(fun(X, Y) -> X+Y end, [1,2,3], [4,5,6]).
结果
[5,7,9]

 

21,zipwith3(Combine, List1, List2, List3) -> List4
将List1和list2,list3中的每个元素执行Combine函数,然后返回一个元素,List4就是由Combine函数返回的一个个元素组成的。
功能和map有点像,但是这里是对三个列表的操作。
例子
lists:zipwith3(fun(X, Y, Z) -> X+Y+Z end, [1,2,3], [4,5,6],[7,8,9]).
结果
[12,15,18]

 

二,不带函数Pred
1,append(ListOfLists) -> List1
ListOfLists都是由List组成的,而List一个列表,里面可以是任何类型的元素
这个函数就是将ListOfLists里面的所有列表的元素按顺序编成一个列表
提示:ListOfLists里面的元素必须都是列表才能用这个函数

例子

lists:append([[1, 2, 3], [a, b], [4, 5, 6]]).

结果:

[1,2,3,a,b,4,5,6]


2,append(List1, List2) -> List3
将List1和List2两个列表连接起来,组成一个列表,然后返回新的这个列表
这个函数的功能等同于List1 ++ List2

例子

lists:append("abc", "def").

结果

"abcdef"

 

3,concat(Things) -> string()
这里的Things是一个列表,里面由atom() | integer() | float() | string()
将这个列表里面的元素拼成一个字符串,然后返回

例子

lists:concat([doc, '/', file, '.', 3]).

结果

doc/file.3"

 

4,delete(Elem, List1) -> List2
List1是由很多Element组成的,这个函数的功能是在List1中寻找第一个和Elem元素一样的,
然后删除之,返回删除后新的列表。

例子

lists:delete({name,"zhangsan"},[{name,"lisi"},{name,"zhangsan"},{name,"wangmazi"})).

结果

[{name,"lisi"},{name,"wangmazi"}]

 

5,duplicate(N, Elem) -> List
返回一个由N个Elem组成的列表。

例子

lists:duplicate(5,"test").

结果

["test","test","test","test","test"]

 

6,flatlength(DeepList) -> integer() >= 0
我的理解是DeepList就是列表里面套列表
计算列表的长度,即用flatten函数将DeepList转化成List后元素的个数
这个函数和length()的区别就是:
length函数是得到列表元素的个数,
而flatlength函数是先将DeepList转化成List后的个数
譬如说List = [1,2,[3,4]]这个列表用
length(List)求的值是:3
lists:flatlength(List)求的值是:4
其实lists:flatlength(List) = length(flatten(List))

7,flatten(DeepList) -> List
将DeepList变成只有term()的list
例子:
lists:flatten([[a,a],[b,b],[c,c]]).
结果:
[a,a,b,b,c,c]

 

8,flatten(DeepList, Tail) -> List
就是将DeepList变成只有term的List后,在后面再加一个Tail。
例子:
lists:flatten([[a,a],[b,b],[c,c]],[dd]).
结果:
[a,a,b,b,c,c,dd]

 

9,keydelete(Key, N, TupleList1) -> TupleList2
这个函数适合处理列表里面的元素是元组的情况
删除TupleList1中元素第N个元素和Key一致的元素,只删除第一个一样的,后面一样的不删除
例子:
List = [{name,"zhangjing"},{sex,"male"},{name,"zhangsan"},{sex,"male"}],
lists:keydelete("male",2,List)
结果:
[{name,"zhangjing"},{name,"zhangsan"},{sex,"male"}]

 

10,keyfind(Key, N, TupleList) -> Tuple | false
查找TupleList中的一个Tuple,如果查找到,返回,如果没有查找到,则返回false
这个Tuple必须满足第N个元素和key是一样。
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
lists:keyfind("zhangjing",2,List1)
结果:{name,"zhangjing"}

 

11,keymember(Key, N, TupleList) -> boolean()
如果TupleList中的元素中存在第N个元素和key一致,则返回true,否则返回false
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
lists:keymember("zhangjing",2,List1).
结果:true

 

12,keymerge(N, TupleList1, TupleList2) -> TupleList3
将TupleList1和TupleList2进行混合,组成一个TupleList,
新组成的TupleList是按照Tuple的第N个元素进行排序的
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
List2 = [{nick,"zj"},{nick,"zs"}].
lists:keymerge(2,List1,List2).
结果:
[{name,"zhangjing"},
 {name,"zhangsan"},
 {nick,"zj"},
 {nick,"zs"}]

 

13,keyreplace(Key, N, TupleList1, NewTuple) -> TupleList2
在TupleList1的Tuple中找出第N个元素和Key一致,然后用NewTuple将这个Tuple替换掉,如果没有找到
,则返回原来的TupleList1
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}]
lists:keyreplace("zhangjing",2,List1,{nickname,"netzj"}).
结果:
[{nickname,"netzj"},{name,"zhangsan"}]

 

14,keysearch(Key, N, TupleList) -> {value, Tuple} | false
这个函数和keyfind差不多,就是返回值的结构不一样
也是在TupleList中找一个Tuple,这个Tuple的第N个元素和Key一样。
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}]
lists:keysearch("zhangjing",2,List1).
结果:
{value,{name,"zhangjing"}}

 

15,keysort(N, TupleList1) -> TupleList2
对TupleList1中的Tuple按照第N个元素进行排序,然后返回一个新的顺序的TupleList。
不过这种排序是固定的。
例子:
List1 = [{name,"zhangsan"},{name,"zhangjing"}].
lists:keysort(2,List1).
结果:
[{name,"zhangjing"},{name,"zhangsan"}]

 

16,keystore(Key, N, TupleList1, NewTuple) -> TupleList2
这个函数和keyreplace函数比较像,不同的是,这个keystore在没有找到对应的Tuple时,
会将这个NewTuple追加在这个TupleList1的最后。
例子:
List1 = [{name,"zhangsan"},{name,"zhangjing"}].
找到了的情况
lists:keystore("zhangjing",2,List1,{name,"netzhangjing"}).
[{name,"netzhangjing"},{name,"zhangsan"}]
没有找到的情况
lists:keystore("zhanging",2,List1,{name,"netzhangjing"}).
[{name,"zhangjing"},{name,"zhangsan"},{name,"netzhangjing"}]

 

17,keytake(Key, N, TupleList1) -> {value, Tuple, TupleList2} | false
在TupleList1中找Tuple,这个Tuple的第N个元素和Key一致,如果找到了这么一个Tuple
那么返回,{value, Tuple, TupleList2} 其中TupleList2是去掉Tuple的TupleList1.
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"},{name,"lisi"}].
lists:keytake("zhangjing",2,List1).
结果:
{value,{name,"zhangjing"},[{name,"zhangsan"},{name,"lisi"}]}

 

18,last(List) -> Last
返回:List最后一个元素
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"},{name,"lisi"}].
lists:last(List1).
结果:
{name,"lisi"}

 

19,max(List) -> Max
取出List中最大的元素,一般List是整型时比较适合。
例子:
lists:max([1,10,15,6]).
结果:
15

 

20,member(Elem, List) -> boolean()
如果Elem和List中的某个元素匹配(相同),那么返回true,否则返回false
例子
lists:member({sex,"1"},[{sex,"1"},{sex,"2"},{sex,"3"}]).
结果:
true

21,merge(ListOfLists) -> List1
ListOfLists是一个列表,里面由子列表构成
这个函数的功能就是将这些子列表合并成一个列表。
例子:
lists:merge([[{11}],[{22}],[{33}]]).
结果
[{11},{22},{33}]

 

22,merge(List1, List2) -> List3
List1和List2分别是一个列表,这个函数的功能是将这两个列表合并成一个列表。
例子:
lists:merge([11],[22]).
结果
[11,22]
[2,1,3,4]


23, merge3(List1, List2, List3) -> List4
将List1,List2,List3合并成一个列表
例子
lists:merge3([11],[22],[33,44]).
结果:
[11,22,33,44]

 

24,min(List) -> Min
返回List中的最小的元素,和max函数对应
例子
lists:min([1,2,3]).
结果
1

 

25,nth(N, List) -> Elem
返回List中的第N个元素。
例子
lists:nth(2,[{name,"zhangsan"},{name,"lisi"},{name,"wangmazi"}]).
结果
{name,"lisi"}

 

26,nthtail(N, List) -> Tail
返回List列表中第N个元素后面的元素
例子
lists:nthtail(3, [a, b, c, d, e]).
结果
[d,e]


27,prefix(List1, List2) -> boolean()
如果List1是List2的前缀(也就是说List1和List2前部分相同),那么返回true,否则返回false

28,reverse(List1) -> List2
将List1反转
例子
lists:reverse([1,2,3,4]).
结果
[4,3,2,1]

 

29,reverse(List1, Tail) -> List2
将List1反转,然后将Tail接在反转List1的后面,然后返回
例子
lists:reverse([1, 2, 3, 4], [a, b, c]).
[4,3,2,1,a,b,c]

 

30,seq(From, To) -> Seq
其中From和To都是整型,这个函数返回一个从From到To的一个整型列表。
例子
lists:seq(1,10).
结果
[1,2,3,4,5,6,7,8,9,10]

 

31,seq(From, To, Incr) -> Seq
返回一个整型列表,这个列表的后一个元素比前一个元素大Incr。
例子
lists:seq(1,10,4).
[1,5,9]

 

32,sort(List1) -> List2
将List1中的元素从小到大排序,然后返回新的一个列表。
例子
lists:sort([3,2,1]).
结果
[1,2,3]


33,split(N, List1) -> {List2, List3}
将List1分成List2和List3
其中List2包括List1的前N个元素,List3包含剩余的。
例子
lists:split(3,[1,2,3,4,5]).
结果
{[1,2,3],[4,5]}


这个函数和partition数有区别,partition是遍历全部的List,而splitwith在遍历时遇到false的情况
则马上结束遍历,返回结果。

34,sublist(List1, Len) -> List2
返回从第一个元素到第Len个元素的列表,这个Len大于List1的长度时,返回全部。
例子
lists:sublist([1,2,3,4,5,6],3).
结果
[1,2,3]

 

35,sublist(List1, Start, Len) -> List2
返回从List1的第Start个位置开始,后面Len个元素的列表。
例子
lists:sublist([1,2,3,4], 2, 2).
结果
[2,3]

 

36,subtract(List1, List2) -> List3
等同于 List1 -- List2
这个函数功能是返回一个List1的副本,对于List2中的每个元素,第一次在List1副本中出现时被删掉。
例子
lists:subtract("112233","12"). 
结果
"1233"

 

37,suffix(List1, List2) -> boolean()
如果List1是List2的后缀,那么返回true,否则返回false
例子
lists:suffix("22","1122").
结果
true

 

38,sum(List) -> number()
返回List中每个元素的和。其中List中的元素都应该是number()类型的。
例子
lists:sum([1,2,3,4]). 
结果
10


39,ukeymerge(N, TupleList1, TupleList2) -> TupleList3
TupleList1和TupleList2里面的元素都是元组
将TupleList1和TupleList2合并,合并的规则是按照元组的第N个元素,如果第N个元素有相同的,那么保留TupleList1中
的,删除TupleList2中的。

 

40,ukeysort(N, TupleList1) -> TupleList2
TupleList1里面的元素都是元组
这个函数也同样返回一个元素是元组的列表,返回的这个列表是按照元组的第N个元素来排序的,如果元组中有出现
第N个元素相同的情况,删除掉后面的一个元组。
例子
lists:ukeysort(1,[{name,"zhangsan"},{sex,"male"},{name,"himan"}]).
结果
[{name,"zhangsan"},{sex,"male"}]

 

41,umerge(ListOfLists) -> List1
这个函数和merge唯一不同的就是,里面不能出现相同的元素,如果出现相同的,那么删除之,只保留一个唯一的
例子
lists:umerge([[1,2],[2,3]]).
结果
[1,2,3]
分析:由于[[1,2],[2,3]]中merge后是[1,2,2,3],这个时候有两个相同的元素2,所以只保存一个2,所以结果是[1,2,3].


42,umerge3(List1, List2, List3) -> List4
将List1, List2, List3合并
和merge3不同的是返回的List4中不能出现重复的元素
例子
lists:merge3([1,2],[2,3],[3,4]).
结果
[1,2,3,4]

 

43,unzip(List1) -> {List2, List3}
List1里面的元素是元组,每个元组由两个元素组成,返回值List2包含每个List1中每个元组的第一个元素
返回值List3包含每个List1中每个元组的第二个元素。
例子
lists:unzip([{name,"zhangsan"},{sex,"male"},{city,"hangzhou"}]).
结果
{[name,sex,city],["zhangsan","male","hangzhou"]}

 

44,unzip3(List1) -> {List2, List3, List4}
List1里面的元素是元组,每个元组由三个元素组成,返回值List2包含每个List1中每个元组的第一个元素;
返回值List3包含每个List1中每个元组的第二个元素;返回值List4包含每个List1中每个元组的第三个元素。
例子
lists:unzip3([{name,"zhangsan","apple"},{sex,"male","banana"},{city,"hangzhou","orange"}]).
结果
{[name,sex,city],
 ["zhangsan","male","hangzhou"],
 ["apple","banana","orange"]}
注意,最终返回的是一个元组。

45,usort(List1) -> List2
将List1按照从小到大的顺序排序,如果排序后有重复的元素,删除重复的,只保存一个唯一的。
例子
lists:usort([4,3,2,1,2,3,4]).
结果
[1,2,3,4]


46,zip(List1, List2) -> List3
将两个长度相同的列表合并成一个列表
List3是里面的每一个元组的第一个元素是从List1获取的,而每个元组的第二个元素是从List2中获取的
例子
lists:zip([name,sex,city],["zhangsan","male","hangzhou"]).
结果
[{name,"zhangsan"},{sex,"male"},{city,"hangzhou"}]
注意,如果List1和List2长度不一致,那么这个函数将会报错。

 

47,zip3(List1, List2, List3) -> List4
将三个长度相同的列表合并成一个列表
List3是里面的每一个元组的第一个元素是从List1获取的,而每个元组的第二个元素是从List2中获取的
每个元组的第三个元素是从List3中获取的。
例子
lists:zip3([name,sex,city],["zhangsan","male","hangzhou"],["nick","1","zhejiang"]).
结果
[{name,"zhangsan","nick"},
 {sex,"male","1"},
 {city,"hangzhou","zhejiang"}]

 

 

 

 

 

 

lists:append([[1,2,3],[1,b],[3,4,5]]). 结果为 [1,2,3,a,b,3,4,5] 把多个列表合并成一个列表
lists:append("abc","sad"). 结果为 "abcsad" 合并
lists:concat([doc,'/',file,'.',3]). 结果为 "doc/file.3"
lists:delete(a,[s,a,f,a,d]). 结果为 [s,f,a,d] 删除列表中的第一个值等于a
lists:dupilicate(5,xx). 结果为 [xx,xx,xx,xx,xx]
lists:flatten([a,[b,c],[d,[e,f]]]). 结果为 [a,b,c,d,e,f]
lists:foldl(fun(X,Sum)->X+Sum end,0,[1,2,3,4,5]). 结果为 15 求和
lists:keydelete(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). 结果为 [{a,b,c},{a,a,a},{s,d}] 删除列表中第一个元组满足此元组中的第二个元子等于a
lists:keymember(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). 结果为 true 判断列表中有元组且此元组满足第二个元子等于a
lists:keysearch(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). 结果为 {value,{s,a,d}} 查找列表中有元组且此元组满足第二个元子等于a,没有返回false
lists:keyreplace(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}],{f,f}). 结果为 [{a,b,c},{f,f},{a,a,a},{s,d}] 替换满足条件的元组成{f,f}
lists:keymerge(1,[{a,b,c},{s,a,d}],[{a,a,a},{s,d}]). 结果为 [{a,b,c},{s,a,d},{a,a,a},{s,d}] 合并2列表,2列表中都是元组
lists:keysort(2,[{a,b,c},{s,a,d},{a,a,a}]). 结果为 [{s,a,d},{a,a,a},{a,b,c}] 按照列表中个元组的第二个元子大小排序
lists:keystore(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}],{f,f}). 结果为 [{a,b,c},{f,f},{a,a,a},{s,d}] 替换满足条件的元组成{f,f},如果没有满足条件的元组就把新元组加到列表最后一个,注意跟lists:replace的区别
lists:keytake(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). 结果为 {value,{s,a,d},[{a,b,c},{a,a,a},{s,d}]} 注意跟lists:keysearch的区别
lists:last([a,b,c,d]) 结果为 d 取列表的最后一个
lists:map(fun(X)->X*2 end,[1,2,3]). 结果为 [2,4,6] 对列表中的每一个元组进行函数计算,得到新的列表
lists:mapfoldl(fun(X,Sum)->{2*X,X+Sum} end,0,[1,2,3,4,5]). 结果为 {[2,4,6,8,10],15}
lists:max([a,d,g,j,c]). 结果为 j 取列表中最大的一个值
lists:min([a,d,g,j,c]). 结果为 a 取列表中最小的一个值
lists:member(a,[s,a,d]). 结果为 true 判断列表中是否有特定的元子或元组
lists:nth(3,[a,d,g,j,c]). 结果为 g 取列表中的第三个值
lists:nthtail(3,[a,d,g,j,c]). 结果为 [g,j,c] 取列表中第三个值以后的值
lists:partition(fun(A)->A rem 2 == 1 end,[1,2,3,4,5,6,7]). 结果为 {[1,3,5,7],[2,4,6]} 过滤列表
lists:prefix([s,d],[s,d,f,g]). 结果为 true 判断前一列表是否为后一列表的前缀
lists:suffix([f,g],[s,d,f,g]). 结果为 true 判断前一列表是否为后一列表的后缀
lists:reverse([a,b,c,d,e]). 结果为 [e,d,c,b,a] 求列表的反序
lists:seq(1,10). 结果为 [1,2,3,4,5,6,7,8,9,10] 自动生成1-10得值
lists:seq(1,20,3). 结果为 [1,4,7,10,13,16,19] 自动生成1-20中差3的值
lists:sort([4,2,1,5,1,3]). 结果为 [1,1,2,3,4,5] 列表排序
lists:split(3,[a,b,c,d,f]). 结果为 {[a,b,c],[d,f]} 将原列表分割成2列表,第一个列表中包含原列表的头三个值
lists:splitwith(fun(A)->is_atom(A) end,[a,b,1,c,d,2,3,e]). 结果为 {[a,b],[1,c,d,2,3,e]} 分割列表,满足条件的为第一列表,直到第一个不满足条件为止
lists:sublist([a,b,c,d,f],3). 结果为 [a,b,c] 截取列表,注意跟lists:split的区别
lists:sublist([a,b,c,d,f],3,2). 结果为 [c,d] 截取列表,从第三个开始,截取2个
lists:sum(1,2,3,4,5). 结果为 15 求列表和
lists:zip([a,b,c],[d,e,f]). 结果为 [{a,d},{b,e},{c,f}]
lists:zipwith(fun(X,Y)->X+Y end,[1,2,3],[4,5,6]). 结果为 [5,7,9]

分享到:
评论

相关推荐

    Erlang list用法

    在Erlang中,列表是一种基本的数据结构,提供了丰富的操作函数。以下是对标题和描述中提到的Erlang列表函数的详细解释: 1. `all/2`:这个函数用于检查列表`List`中的所有元素是否满足给定的函数`Pred`。如果每个...

    erlang最新api

    STDLIB是Erlang的一个核心模块,包含了各种通用的函数库,如列表操作、字符串处理、文件系统交互等。它为开发者提供了一个全面而强大的工具箱,使得编写高效可靠的Erlang程序变得更加容易。根据文档,STDLIB 1.17.4...

    erlang压缩包.rar

    在本文中,我们将深入探讨如何在 CentOS 7 64位操作系统上安装和配置Erlang环境。 首先,让我们了解Erlang的一些核心特性: 1. **轻量级进程**:Erlang中的进程非常高效,消耗资源少,可以创建数百万个进程进行...

    erlang 笔记

    - **列表操作**: 使用`lists`模块提供的函数进行列表的操作,如`lists:map`和`lists:filter`。 - **`lists:map`**: 对列表中的每个元素应用函数。例如:`lists:map(Double, [1, 2, 3, 4]).` 返回 `[2, 4, 6, 8]`。 ...

    Eralng Maps设计原由

    Erlang Maps设计原由。17版后,还是需要多了解这个maps的。

    可在ubuntu上安装erlang的deb包

    余辛苦六天,方才找到,欲得两分,望汝不骂吾才是。... 使用说明: 1,把文件拷贝到ubuntu任意位置; 2,双击之; ... 4,不同机器安装速度不一样,... stdlib - modules for manipulating lists, strings, files etc.

    rlists:Erlang的扩展列表功能

    编译rebar3 compile测试rebar3 eunit笔记Erlang中没有无限列表。 因此,在Haskell中使用无限列表进行操作的函数将需要附加的输入自变量来说明终止条件。 例如, rlists : iterate ( fun ( X ) -> X * 2 end , 1 , 99...

    Erlang and OTP in Action MEAP May 2010

    Erlang and OTP in Action Martin Logan, Eric Merritt, and Richard Carlsson MEAP Began: August 2008 Softbound print: May 2010 (est.) | 500 pages ...Appendix B – Lists and Referential Transparency

    erlang r17官方api及stdlib手册

    1. **lists**: 这个模块提供了处理列表的各种函数,如`append/2`用于连接两个列表,`filter/2`用于过滤列表元素,`foldl/foldr`用于对列表进行聚合操作。 2. **io**: 提供了输入/输出功能,如`io:format/2`用于格式...

    erlang 入门练习

    Erlang还提供了丰富的标准库,如`io`模块用于输入输出,`lists`模块提供了各种列表操作,`erlang`模块包含了Erlang的内置函数等。`client.erl`可能会使用这些库来实现功能,比如`io:format/2`用于打印信息,`lists:...

    KMP(Erlang)代码实现

    Erlang是一种面向并发的编程语言,它采用轻量级进程以及消息传递模型,非常适合于编写并发和分布式系统。Erlang的函数式编程特性以及对模式匹配的支持,为实现KMP算法提供了便利。 在给定的文件内容中,通过Erlang...

    Erlang与云计算.pdf(确保可以打开)

    - **标准化难题**:缺乏统一的标准可能会导致兼容性和互操作性问题。 **3.3 前云计算时代的瓶颈** 在云计算出现之前,传统的数据中心面临诸多挑战,包括: - **资源共享带来的瓶颈**:共享资源会导致性能瓶颈。 - *...

    Erlang中文手册

    - **启动方式**: 在大多数操作系统上,可以通过命令行输入 `erl` 来启动Erlang Shell。 - **功能**: 用户可以测试表达式、定义函数、加载模块等。 - **退出**: 使用 `q().` 命令退出Erlang Shell。 - **模块和...

    Erlang基础知识集锦

    Erlang支持超大量级的并发,是面向并发(Concurrency Oriented)的语言,其并发性能允许创建成千上万个轻量级线程,而无需依赖操作系统支持。 Erlang语言的特性包括: - 并发性:支持大量并发线程,无需操作系统的...

    Introducing Erlang

    7. **Erlang的数据类型**,诸如原子(Atoms)、元组(Tuples)和列表(Lists),这些是函数式编程中的基础数据结构。在Erlang中,它们用于构造和组织数据。原子是常量,元组用于存储固定数量的相关项,而列表是动态...

    erlang并发编程 .pdf

    标准库部分则介绍了io、file、lists和code等模块,这些模块为Erlang编程提供了丰富的工具集。 翻译计划部分介绍了翻译计划的发起人连城,以及CPiE-CN翻译志愿者团队。志愿者们负责翻译各个章节,并且整个翻译过程...

    Erlang编写的生成一注双色球小程序

    在这个双色球小程序中,Erlang的独特特性和内置函数(BIFs,Built-in Functions)被巧妙地利用来实现随机数生成和链表操作。 1. **随机数生成**: 在Erlang中,生成随机数主要依赖于`rand`模块。这个小程序可能...

Global site tag (gtag.js) - Google Analytics