1. 程式人生 > >Erlang入門(三)列表的常用操作

Erlang入門(三)列表的常用操作

一、列表的拼接與刪減

“++”代表列表的拼接,”–”代表列表的刪減,如:

1> [1,2,3] ++ [4,5].
[1,2,3,4,5]
2> [1,2,3] -- [1,3].
[2]

對於多個–或者++操作來說,操作是從右向左進行的,如:

1> [1,2,3] -- [1,2] -- [3].
[3]
2> [1,2,3] -- [1,2] -- [2].
[2,3]

二、列表推導式

在這裡先舉一個數學集合的例子,比如{x | x > 0,x∈R}的含義就是x為所有大於0的實數的集合。

再來舉個例子, {x | x % 2 = 0, x∈H}, H = {1, 2, 3, 4, 5},這裡的含義為x是1-5中所有偶數的集合 改寫成列表推導式,[X || X <- [1,2,3,4,5], X rem 2 =:= 0] “<-“代表”∈”, “||”代表”|”,外部的花括號被中括號代替

抽象出來就是: [ Expree || Pattern <- List, Condition1,Condition2,…,ConditionN ]

列表推導式的結果是一個符合給定條件的列表,下面舉幾個例子:

1> [{X1,X2 * 2} || {X1,X2} <- [{orange,10},{banana,6},{apple,2}]].
[{orange,20},{banana,12},{apple,4}]
2> [X + Y || X <- [1,2],Y <-[3,4]].
[4,5,5,6]

三、列表的常用函式

lists:append(List1,List2)

拼接列表,返回拼接後的列表

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

lists:concat(List)

將列表中的元素拼接成字串

> lists:concat([1,2,3,a,b]).
"123ab"

lists:delete(Elem,List1)

如果Elem存在列表中,則刪除列表中第一個匹配的元素

> lists:delete(5, [1,2,3,4,5]).
[1,2,3,4]

lists:seq(From, To) 與lists:seq(From, To, Incr)

生成一個列表,第三個參賽為增量,預設為1

> lists:seq(1,10).
[1,2,3,4,5,6,7,8,9,10]
> lists:seq(1,10,2).
[1,3,5,7,9]

lists:sort(List)

給列表排序

> lists:sort([4,2,7,3,9,1]).
[1,2,3,4,7,9]