erlang lists
http://blog.csdn.net/dp0304/article/details/7590233
一,帶函數(shù)Pred
1, all(Pred, List) -> boolean()
如果List中的每個元素作為Pred函數(shù)的參數(shù)執(zhí)行,結(jié)果都返回true,那么all函數(shù)返回true,
否則返回false
例子:
lists:all(fun(E) -> true end,[1,2,3,4]).
結(jié)果
true
2, any(Pred, List) -> boolean()
如果List中至少有一個元素作為Pred函數(shù)的參數(shù)執(zhí)行,結(jié)果返回true,那么any函數(shù)返回true,
否則返回false
例子
lists:any(fun(E) -> is_integer(E) end,[q,2,a,4]).
結(jié)果
true
?
3,dropwhile(Pred, List1) -> List2
將List1列表中的元素作為參數(shù)執(zhí)行Pred函數(shù),如果返回true,將其丟棄,最后返回剩余元素
組成的列表
例子
lists:dropwhile(fun(E) -> is_atom(E) end,[a,1,2,a,b]).
結(jié)果
[1,2,a,b]
4,filter(Pred, List1) -> List2
返回一個列表,這個列表是由List1中執(zhí)行Pred函數(shù)返回true的元素組成。
lists:filter(fun(E) -> is_integer(E) end,[q,2,a,4]).
結(jié)果:
[2,4]
?
5,map(Fun, List1) -> List2
將List1中的每個元素去在Fun中執(zhí)行,然后返回一個元素,最后返回的這些元素組成一個列表,
返回給List2
例子:
lists:map(fun(X)->[X,X] end, [a,b,c]).
結(jié)果:[[a,a],[b,b],[c,c]]
?
6,flatmap(Fun, List1) -> List2
這個函數(shù)和map比較類似,相當于執(zhí)行了
lists:append(lists:map(List1)).
也就是把map的結(jié)果進行append處理
例子:
lists:flatmap(fun(X)->[X,X] end, [a,b,c]).
結(jié)果:[a,a,b,b,c,c]
?
7,foldl(Fun, Acc0, List) -> Acc1
Fun這個函數(shù)有兩個參數(shù)
第一個參數(shù)是List中的元素,第二個參數(shù)是Fun函數(shù)執(zhí)行完后的返回值,這個參數(shù)第一次執(zhí)行時
就是Acc0
例子:對[1,2,3,4,5]求和
lists:foldl(fun(X, Sum) -> X + Sum end, 0, [1,2,3,4,5]).
結(jié)果:15
執(zhí)行過程:首先,Fun第一次執(zhí)行時,X的值取列表List的第一個元素1,Sum取0,
??Fun第二次執(zhí)行時,X的值取列表List的第二個元素2,Sum取Fun第一次的返回值
??依次輪推,直到List中每個元素執(zhí)行完,最后foldl返回最后一次的結(jié)果。
?
8,foldr(Fun, Acc0, List) -> Acc1
foldr這個函數(shù)和foldl比較相似
不過是Fun執(zhí)行時,X的值先取List的最后一個,然后取倒數(shù)第二個。
?
9,foreach(Fun, List) -> ok
以List中的每個元素為參數(shù)執(zhí)行Fun函數(shù),執(zhí)行順序按照List中元素的順序,這個函數(shù)最后返回ok。是單邊的
例子 lists:foreach(fun(X)->
??%%using X to do somethings?
??%%
??end,List)
?
10,keymap(Fun, N, TupleList1) -> TupleList2
對TupleList1中的每個元素的第N項作為參數(shù)在Fun中處理,然后這個第N項最后就被替換為Fun執(zhí)行完返回的值
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
lists:keymap(fun(X)->?
??list_to_atom(X)?
??end,2,List1).
結(jié)果:
[{name,zhangjing},{name,zhangsan}]
?
11,mapfoldl(Fun, Acc0, List1) -> {List2, Acc1}
這個函數(shù)等于是把map和foldl函數(shù)結(jié)合起來。將List1中的每一個元素執(zhí)行Fun函數(shù),執(zhí)行后花括號的第一個值作為返回值返回,
第二個值作為參數(shù)傳給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}
這個函數(shù)相當于將map和foldr結(jié)合起來
13,merge(Fun, List1, List2) -> List3
這個函數(shù)的功能也是把List1和List2合并到一起,只不過是List1和List2的元素要作為參數(shù)在Fun中執(zhí)行,如果
Fun返回true,那么返回值就是List1在前,List2在后。否則,反之。
例子
lists:merge(fun(A,B)-> false end, [3,4],[2,1]).
結(jié)果
[2,1,3,4]
?
14,partition(Pred, List) -> {Satisfying, NotSatisfying}
這個函數(shù)的功能是將List分成兩個List1和List2,List1是將List元素作為參數(shù)去Pred函數(shù)中執(zhí)行返回true的元素組成,
List2由Pred返回false的元素組成。
注意,返回的是一個元組
例子
lists:partition(fun(A) -> A rem 2 == 1 end, [1,2,3,4,5,6,7]).
結(jié)果
{[1,3,5,7],[2,4,6]}
15,sort(Fun, List1) -> List2
如果Fun函數(shù)返回true,則排序是從小到大的順序,否則,從大到小。
其中Fun有兩個參數(shù)。
例子
lists:sort(fun(A,B)-> false end,[1,2,3]).
結(jié)果
[3,2,1]
16,splitwith(Pred, List) -> {List1, List2}
將List分成List1和List2,
List1由List中元素在Pred函數(shù)返回true的組成,但是有一點,如果遇到為false的,則將剩下的元素
全部放到List2中,List1中就只有前面為true的。
例子
lists:splitwith(fun(A) -> is_atom(A) end, [a,b,1,c,d,2,3,4,e]).
結(jié)果
{[a,b],[1,c,d,2,3,4,e]}
17,takewhile(Pred, List1) -> List2
List1中的元素element依次執(zhí)行Pred(element),如果返回true,則獲取這個元素,直到有元素執(zhí)行Pred(element)返回false
例子
lists:takewhile(fun(E)-> is_atom(E) end,[a,b,1,e,{c},[d]]).
結(jié)果
[a,b]
18,umerge(Fun, List1, List2) -> List3
這個函數(shù)和merge不同的是 當Fun返回true時,返回的List3中不能出現(xiàn)相同的元素
疑問:但是當Fun返回false時,List3中可以有相同的元素。
例子(Fun返回true的情況)
lists:umerge(fun(A,B)-> true end,[1,2],[2,3]).
結(jié)果
[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函數(shù)進行排序,如果Fun返回true,那么只返回List1的第一個元素
如果Fun返回false,那么List1從大到小排序
例子1
lists:usort(fun(A,B) -> true end, [1,2,2,3,4]).
結(jié)果
[1]
例子2
lists:usort(fun(A,B) -> false end, [1,2,2,3,4]).
結(jié)果
[4,3,2,2,1]
20,zipwith(Combine, List1, List2) -> List3
將List1和list2中的每個元素執(zhí)行Combine函數(shù),然后返回一個元素,List3就是由Combine函數(shù)返回的一個個元素組成的。
功能和map有點像,但是這里是對兩個列表的操作。
例子
lists:zipwith(fun(X, Y) -> X+Y end, [1,2,3], [4,5,6]).
結(jié)果
[5,7,9]
?
21,zipwith3(Combine, List1, List2, List3) -> List4
將List1和list2,list3中的每個元素執(zhí)行Combine函數(shù),然后返回一個元素,List4就是由Combine函數(shù)返回的一個個元素組成的。
功能和map有點像,但是這里是對三個列表的操作。
例子
lists:zipwith3(fun(X, Y, Z) -> X+Y+Z end, [1,2,3], [4,5,6],[7,8,9]).
結(jié)果
[12,15,18]
?
二,不帶函數(shù)Pred
1,append(ListOfLists) -> List1
ListOfLists都是由List組成的,而List一個列表,里面可以是任何類型的元素
這個函數(shù)就是將ListOfLists里面的所有列表的元素按順序編成一個列表
提示:ListOfLists里面的元素必須都是列表才能用這個函數(shù)
例子
lists:append([[1, 2, 3], [a, b], [4, 5, 6]]).
結(jié)果:
[1,2,3,a,b,4,5,6]
2,append(List1, List2) -> List3
將List1和List2兩個列表連接起來,組成一個列表,然后返回新的這個列表
這個函數(shù)的功能等同于List1 ++ List2
例子
lists:append("abc", "def").
結(jié)果
"abcdef"
?
3,concat(Things) -> string()
這里的Things是一個列表,里面由atom() | integer() | float() | string()
將這個列表里面的元素拼成一個字符串,然后返回
例子
lists:concat([doc, '/', file, '.', 3]).
結(jié)果
doc/file.3"
?
4,delete(Elem, List1) -> List2
List1是由很多Element組成的,這個函數(shù)的功能是在List1中尋找第一個和Elem元素一樣的,
然后刪除之,返回刪除后新的列表。
例子
lists:delete({name,"zhangsan"},[{name,"lisi"},{name,"zhangsan"},{name,"wangmazi"})).
結(jié)果
[{name,"lisi"},{name,"wangmazi"}]
?
5,duplicate(N, Elem) -> List
返回一個由N個Elem組成的列表。
例子
lists:duplicate(5,"test").
結(jié)果
["test","test","test","test","test"]
?
6,flatlength(DeepList) -> integer() >= 0
我的理解是DeepList就是列表里面套列表
計算列表的長度,即用flatten函數(shù)將DeepList轉(zhuǎn)化成List后元素的個數(shù)
這個函數(shù)和length()的區(qū)別就是:
length函數(shù)是得到列表元素的個數(shù),
而flatlength函數(shù)是先將DeepList轉(zhuǎn)化成List后的個數(shù)
譬如說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]]).
結(jié)果:
[a,a,b,b,c,c]
?
8,flatten(DeepList, Tail) -> List
就是將DeepList變成只有term的List后,在后面再加一個Tail。
例子:
lists:flatten([[a,a],[b,b],[c,c]],[dd]).
結(jié)果:
[a,a,b,b,c,c,dd]
?
9,keydelete(Key, N, TupleList1) -> TupleList2
這個函數(shù)適合處理列表里面的元素是元組的情況
刪除TupleList1中元素第N個元素和Key一致的元素,只刪除第一個一樣的,后面一樣的不刪除
例子:
List = [{name,"zhangjing"},{sex,"male"},{name,"zhangsan"},{sex,"male"}],
lists:keydelete("male",2,List)
結(jié)果:
[{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)
結(jié)果:{name,"zhangjing"}
?
11,keymember(Key, N, TupleList) -> boolean()
如果TupleList中的元素中存在第N個元素和key一致,則返回true,否則返回false
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}].
lists:keymember("zhangjing",2,List1).
結(jié)果: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).
結(jié)果:
[{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"}).
結(jié)果:
[{nickname,"netzj"},{name,"zhangsan"}]
?
14,keysearch(Key, N, TupleList) -> {value, Tuple} | false
這個函數(shù)和keyfind差不多,就是返回值的結(jié)構(gòu)不一樣
也是在TupleList中找一個Tuple,這個Tuple的第N個元素和Key一樣。
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"}]
lists:keysearch("zhangjing",2,List1).
結(jié)果:
{value,{name,"zhangjing"}}
?
15,keysort(N, TupleList1) -> TupleList2
對TupleList1中的Tuple按照第N個元素進行排序,然后返回一個新的順序的TupleList。
不過這種排序是固定的。
例子:
List1 = [{name,"zhangsan"},{name,"zhangjing"}].
lists:keysort(2,List1).
結(jié)果:
[{name,"zhangjing"},{name,"zhangsan"}]
?
16,keystore(Key, N, TupleList1, NewTuple) -> TupleList2
這個函數(shù)和keyreplace函數(shù)比較像,不同的是,這個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).
結(jié)果:
{value,{name,"zhangjing"},[{name,"zhangsan"},{name,"lisi"}]}
?
18,last(List) -> Last
返回:List最后一個元素
例子:
List1 = [{name,"zhangjing"},{name,"zhangsan"},{name,"lisi"}].
lists:last(List1).
結(jié)果:
{name,"lisi"}
?
19,max(List) -> Max
取出List中最大的元素,一般List是整型時比較適合。
例子:
lists:max([1,10,15,6]).
結(jié)果:
15
?
20,member(Elem, List) -> boolean()
如果Elem和List中的某個元素匹配(相同),那么返回true,否則返回false
例子
lists:member({sex,"1"},[{sex,"1"},{sex,"2"},{sex,"3"}]).
結(jié)果:
true
21,merge(ListOfLists) -> List1
ListOfLists是一個列表,里面由子列表構(gòu)成
這個函數(shù)的功能就是將這些子列表合并成一個列表。
例子:
lists:merge([[{11}],[{22}],[{33}]]).
結(jié)果
[{11},{22},{33}]
?
22,merge(List1, List2) -> List3
List1和List2分別是一個列表,這個函數(shù)的功能是將這兩個列表合并成一個列表。
例子:
lists:merge([11],[22]).
結(jié)果
[11,22]
[2,1,3,4]
23, merge3(List1, List2, List3) -> List4
將List1,List2,List3合并成一個列表
例子
lists:merge3([11],[22],[33,44]).
結(jié)果:
[11,22,33,44]
?
24,min(List) -> Min
返回List中的最小的元素,和max函數(shù)對應
例子
lists:min([1,2,3]).
結(jié)果
1
?
25,nth(N, List) -> Elem
返回List中的第N個元素。
例子
lists:nth(2,[{name,"zhangsan"},{name,"lisi"},{name,"wangmazi"}]).
結(jié)果
{name,"lisi"}
?
26,nthtail(N, List) -> Tail
返回List列表中第N個元素后面的元素
例子
lists:nthtail(3, [a, b, c, d, e]).
結(jié)果
[d,e]
27,prefix(List1, List2) -> boolean()
如果List1是List2的前綴(也就是說List1和List2前部分相同),那么返回true,否則返回false
28,reverse(List1) -> List2
將List1反轉(zhuǎn)
例子
lists:reverse([1,2,3,4]).
結(jié)果
[4,3,2,1]
?
29,reverse(List1, Tail) -> List2
將List1反轉(zhuǎn),然后將Tail接在反轉(zhuǎn)List1的后面,然后返回
例子
lists:reverse([1, 2, 3, 4], [a, b, c]).
[4,3,2,1,a,b,c]
?
30,seq(From, To) -> Seq
其中From和To都是整型,這個函數(shù)返回一個從From到To的一個整型列表。
例子
lists:seq(1,10).
結(jié)果
[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]).
結(jié)果
[1,2,3]
33,split(N, List1) -> {List2, List3}
將List1分成List2和List3
其中List2包括List1的前N個元素,List3包含剩余的。
例子
lists:split(3,[1,2,3,4,5]).
結(jié)果
{[1,2,3],[4,5]}
這個函數(shù)和partition數(shù)有區(qū)別,partition是遍歷全部的List,而splitwith在遍歷時遇到false的情況
則馬上結(jié)束遍歷,返回結(jié)果。
34,sublist(List1, Len) -> List2
返回從第一個元素到第Len個元素的列表,這個Len大于List1的長度時,返回全部。
例子
lists:sublist([1,2,3,4,5,6],3).
結(jié)果
[1,2,3]
?
35,sublist(List1, Start, Len) -> List2
返回從List1的第Start個位置開始,后面Len個元素的列表。
例子
lists:sublist([1,2,3,4], 2, 2).
結(jié)果
[2,3]
?
36,subtract(List1, List2) -> List3
等同于 List1 -- List2
這個函數(shù)功能是返回一個List1的副本,對于List2中的每個元素,第一次在List1副本中出現(xiàn)時被刪掉。
例子
lists:subtract("112233","12").?
結(jié)果
"1233"
?
37,suffix(List1, List2) -> boolean()
如果List1是List2的后綴,那么返回true,否則返回false
例子
lists:suffix("22","1122").
結(jié)果
true
?
38,sum(List) -> number()
返回List中每個元素的和。其中List中的元素都應該是number()類型的。
例子
lists:sum([1,2,3,4]).?
結(jié)果
10
39,ukeymerge(N, TupleList1, TupleList2) -> TupleList3
TupleList1和TupleList2里面的元素都是元組
將TupleList1和TupleList2合并,合并的規(guī)則是按照元組的第N個元素,如果第N個元素有相同的,那么保留TupleList1中
的,刪除TupleList2中的。
?
40,ukeysort(N, TupleList1) -> TupleList2
TupleList1里面的元素都是元組
這個函數(shù)也同樣返回一個元素是元組的列表,返回的這個列表是按照元組的第N個元素來排序的,如果元組中有出現(xiàn)
第N個元素相同的情況,刪除掉后面的一個元組。
例子
lists:ukeysort(1,[{name,"zhangsan"},{sex,"male"},{name,"himan"}]).
結(jié)果
[{name,"zhangsan"},{sex,"male"}]
?
41,umerge(ListOfLists) -> List1
這個函數(shù)和merge唯一不同的就是,里面不能出現(xiàn)相同的元素,如果出現(xiàn)相同的,那么刪除之,只保留一個唯一的
例子
lists:umerge([[1,2],[2,3]]).
結(jié)果
[1,2,3]
分析:由于[[1,2],[2,3]]中merge后是[1,2,2,3],這個時候有兩個相同的元素2,所以只保存一個2,所以結(jié)果是[1,2,3].
42,umerge3(List1, List2, List3) -> List4
將List1, List2, List3合并
和merge3不同的是返回的List4中不能出現(xiàn)重復的元素
例子
lists:merge3([1,2],[2,3],[3,4]).
結(jié)果
[1,2,3,4]
?
43,unzip(List1) -> {List2, List3}
List1里面的元素是元組,每個元組由兩個元素組成,返回值List2包含每個List1中每個元組的第一個元素
返回值List3包含每個List1中每個元組的第二個元素。
例子
lists:unzip([{name,"zhangsan"},{sex,"male"},{city,"hangzhou"}]).
結(jié)果
{[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"}]).
結(jié)果
{[name,sex,city],
?["zhangsan","male","hangzhou"],
?["apple","banana","orange"]}
注意,最終返回的是一個元組。
45,usort(List1) -> List2
將List1按照從小到大的順序排序,如果排序后有重復的元素,刪除重復的,只保存一個唯一的。
例子
lists:usort([4,3,2,1,2,3,4]).
結(jié)果
[1,2,3,4]
46,zip(List1, List2) -> List3
將兩個長度相同的列表合并成一個列表
List3是里面的每一個元組的第一個元素是從List1獲取的,而每個元組的第二個元素是從List2中獲取的
例子
lists:zip([name,sex,city],["zhangsan","male","hangzhou"]).
結(jié)果
[{name,"zhangsan"},{sex,"male"},{city,"hangzhou"}]
注意,如果List1和List2長度不一致,那么這個函數(shù)將會報錯。
?
47,zip3(List1, List2, List3) -> List4
將三個長度相同的列表合并成一個列表
List3是里面的每一個元組的第一個元素是從List1獲取的,而每個元組的第二個元素是從List2中獲取的
每個元組的第三個元素是從List3中獲取的。
例子
lists:zip3([name,sex,city],["zhangsan","male","hangzhou"],["nick","1","zhejiang"]).
結(jié)果
[{name,"zhangsan","nick"},
?{sex,"male","1"},
?{city,"hangzhou","zhejiang"}]
?
?
?
?
?
?
| lists:append([[1,2,3],[1,b],[3,4,5]]). | 結(jié)果為?[1,2,3,a,b,3,4,5] | 把多個列表合并成一個列表 |
| lists:append("abc","sad"). | 結(jié)果為?"abcsad" | 合并 |
| lists:concat([doc,'/',file,'.',3]). | 結(jié)果為?"doc/file.3" | |
| lists:delete(a,[s,a,f,a,d]). | 結(jié)果為?[s,f,a,d] | 刪除列表中的第一個值等于a |
| lists:dupilicate(5,xx). | 結(jié)果為?[xx,xx,xx,xx,xx] | |
| lists:flatten([a,[b,c],[d,[e,f]]]). | 結(jié)果為?[a,b,c,d,e,f] | |
| lists:foldl(fun(X,Sum)->X+Sum?end,0,[1,2,3,4,5]). | 結(jié)果為?15 | 求和 |
| lists:keydelete(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). | 結(jié)果為?[{a,b,c},{a,a,a},{s,d}] | 刪除列表中第一個元組滿足此元組中的第二個元子等于a |
| lists:keymember(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). | 結(jié)果為?true | 判斷列表中有元組且此元組滿足第二個元子等于a |
| lists:keysearch(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). | 結(jié)果為?{value,{s,a,d}} | 查找列表中有元組且此元組滿足第二個元子等于a,沒有返回false |
| lists:keyreplace(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}],{f,f}). | 結(jié)果為?[{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}]). | 結(jié)果為?[{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}]). | 結(jié)果為?[{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}). | 結(jié)果為?[{a,b,c},{f,f},{a,a,a},{s,d}] | 替換滿足條件的元組成{f,f},如果沒有滿足條件的元組就把新元組加到列表最后一個,注意跟lists:replace的區(qū)別 |
| lists:keytake(a,2,[{a,b,c},{s,a,d},{a,a,a},{s,d}]). | 結(jié)果為?{value,{s,a,d},[{a,b,c},{a,a,a},{s,d}]} | 注意跟lists:keysearch的區(qū)別 |
| lists:last([a,b,c,d]) | 結(jié)果為?d | 取列表的最后一個 |
| lists:map(fun(X)->X*2?end,[1,2,3]). | 結(jié)果為?[2,4,6] | 對列表中的每一個元組進行函數(shù)計算,得到新的列表 |
| lists:mapfoldl(fun(X,Sum)->{2*X,X+Sum}?end,0,[1,2,3,4,5]). | 結(jié)果為?{[2,4,6,8,10],15} | |
| lists:max([a,d,g,j,c]). | 結(jié)果為?j | 取列表中最大的一個值 |
| lists:min([a,d,g,j,c]). | 結(jié)果為?a | 取列表中最小的一個值 |
| lists:member(a,[s,a,d]). | 結(jié)果為?true | 判斷列表中是否有特定的元子或元組 |
| lists:nth(3,[a,d,g,j,c]). | 結(jié)果為?g | 取列表中的第三個值 |
| lists:nthtail(3,[a,d,g,j,c]). | 結(jié)果為?[g,j,c] | 取列表中第三個值以后的值 |
| lists:partition(fun(A)->A?rem?2?==?1?end,[1,2,3,4,5,6,7]). | 結(jié)果為?{[1,3,5,7],[2,4,6]} | 過濾列表 |
| lists:prefix([s,d],[s,d,f,g]). | 結(jié)果為?true | 判斷前一列表是否為后一列表的前綴 |
| lists:suffix([f,g],[s,d,f,g]). | 結(jié)果為?true | 判斷前一列表是否為后一列表的后綴 |
| lists:reverse([a,b,c,d,e]). | 結(jié)果為?[e,d,c,b,a] | 求列表的反序 |
| lists:seq(1,10). | 結(jié)果為?[1,2,3,4,5,6,7,8,9,10] | 自動生成1-10得值 |
| lists:seq(1,20,3). | 結(jié)果為?[1,4,7,10,13,16,19] | 自動生成1-20中差3的值 |
| lists:sort([4,2,1,5,1,3]). | 結(jié)果為?[1,1,2,3,4,5] | 列表排序 |
| lists:split(3,[a,b,c,d,f]). | 結(jié)果為?{[a,b,c],[d,f]} | 將原列表分割成2列表,第一個列表中包含原列表的頭三個值 |
| lists:splitwith(fun(A)->is_atom(A)?end,[a,b,1,c,d,2,3,e]). | 結(jié)果為?{[a,b],[1,c,d,2,3,e]} | 分割列表,滿足條件的為第一列表,直到第一個不滿足條件為止 |
| lists:sublist([a,b,c,d,f],3). | 結(jié)果為?[a,b,c] | 截取列表,注意跟lists:split的區(qū)別 |
| lists:sublist([a,b,c,d,f],3,2). | 結(jié)果為?[c,d] | 截取列表,從第三個開始,截取2個 |
| lists:sum(1,2,3,4,5). | 結(jié)果為?15 | 求列表和 |
| lists:zip([a,b,c],[d,e,f]). | 結(jié)果為?[{a,d},{b,e},{c,f}] | |
| lists:zipwith(fun(X,Y)->X+Y?end,[1,2,3],[4,5,6]). | 結(jié)果為?[5,7,9] |
轉(zhuǎn)載于:https://www.cnblogs.com/fvsfvs123/p/4136887.html
總結(jié)
以上是生活随笔為你收集整理的erlang lists的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 迪美特TVZ8双核智能高清播放器 在电视
- 下一篇: MySql触发器讲解及使用案例