Erlang 十二 列表推導 實現對列表的排序

2021-10-24 07:20:32 字數 3532 閱讀 7648

將乙個數字列表由小到大進行排序

%% list.erl

-module

(list).

-export([

sortnum/1

]).%% 對純數字列表排序:從小到大

%% num:當前的數字,列表中第乙個數字

%% list:取出第乙個數字後,其餘的列表

sortnum([

num|

list])

->

%% 通過列表推導,找到比當前數字小的數字列表

sortnum([

x||x

<

-list,x

<

num]

)%% 把當前的數字,放在比自己小的數字列表後邊++[

num]

++%% 通過列表推導,找到比當前數字大的數字列表

sortnum([

x||x

<

-list,x

>=

num]);

%% 排序結束

sortnum([

])->

.

>

erl>

list

:sortnum([

4,8,

5,2,

1]).

[1,2

,4,5

,8]

呼叫list:sortnum([4,8,5,2,1]).
sortnum([

4|[8

,5,2

,1]]

)->

%% 通過列表推導,找到比4小的數字列表,得到列表[2,1],等於 `sortnum([2, 1])`

sortnum([

x||x

<-[

8,5,

2,1]

,x<4]

)%% 把4放在比自己小的數字列表後邊++[

1]++%% 通過列表推導,找到比4大的數字列表,得到列表[8,5],等於 `sortnum([8,5])`

sortnum([

x||x

<-[

8,5,

2,1]

,x>=4]

);

呼叫sortnum([x || x <- [8,5,2,1], x < 4]),等於sortnum([2, 1])
sortnum([

2|[1

]])-

>

%% 通過列表推導,找到比2小的數字列表, [1], 呼叫 sortnum([1])

sortnum([

x||x

<-[

1],x

<2]

)%% 把2放在比自己小的數字列表後邊++[

2]++%% 通過列表推導,找到比2大的數字列表, 得到列表 , 呼叫 sortnum()

sortnum([

x||x

<-[

1],x

>=2]

);

呼叫sortnum([x || x <- [1], x < 2]),等於sortnum([1])
sortnum([

1|])

->

%% 通過列表推導,找到比1小的數字列表, 得到列表 , 呼叫 sortnum(),返回

sortnum([

x||x

<-[

],x<1]

)%% 把8放在比自己小的數字列表後邊++[

1]++%% 通過列表推導,找到比1大的數字列表, 得到列表 , 呼叫 sortnum(),返回

sortnum([

x||x

<-[

1],x

>=1]

);

呼叫sortnum([x || x <- [8,5,2,1], x >= 4]),等於sortnum([8,5])
sortnum([

8|[5

]])-

>

%% 通過列表推導,找到比8小的數字列表, 得到列表 [5], 呼叫 sortnum([5])

sortnum([

x||x

<-[

5],x

<8]

)%% 把8放在比自己小的數字列表後邊++[

8]++%% 通過列表推導,找到比8大的數字列表, 得到列表 , 呼叫 sortnum(),返回

sortnum([

x||x

<-[

5],x

>=8]

);

呼叫sortnum([x || x <- [5], x < 8]),等於sortnum([5])
sortnum([

5|])

->

%% 通過列表推導,找到比8小的數字列表, 得到列表 , 呼叫 sortnum(),返回

sortnum([

x||x

<-[

],x<5]

)%% 把5放在比自己小的數字列表後邊++[

5]++%% 通過列表推導,找到比8大的數字列表, 得到列表 , 呼叫 sortnum(),返回

sortnum([

x||x

<-[

],x>=5]

);

流程5返回[5]

流程4等於流程5++[8],結果[5]++[8]=[5, 8]

流程3返回[1]

流程2等於流程3++[2],結果[1]++[2]=[1, 2]

流程1等於流程2++[4]++流程4,結果[1, 2]++[4]++[5, 8]=[1,2,4,5,8]

有乙個列表,裡面的元素是商品的名字和**,從高到低排序

list=[

,,,,

,,,]

Erlang 十一 列表推導

使用特定的列 式來處理列表 f x x l f x x l x 0 l待處理的列表 x列表中的乙個元素 f對x的處理函式 x 0是否處理列表元素的判斷。如果x小於等於0,跳過處理 已知列表 1,2,3,4,5 得到每個元素乘以2後的新列表 純數字組成的陣列 list 1,2,3,4,5 1,2,3,...

用列表推導的方式實現多個列表合併!!!

在使用 裝飾器的時候,我遇到了乙個函式傳參的問題,我想把 args裡面的list進行合併,而且我想通過列表推導來解決這個問題。查詢了一下網上,沒有人用這種方法解決。只知道可以通過c a b或者extend的方式。因為受到了列表推導雙for的誤導,我一直考慮通過兩個for迴圈的列表巢狀來解決這個問題。...

Python利用遞迴函式和列表推導式實現快速排序

python 基礎知識 遞迴函式 函式在內部呼叫自身,這個函式就是遞迴函式 計算1 n的整數之和 sum n n 1 n 1 1 1 def fact n if n 1 return 1 return n fact n 1 n 10s fact 10 print r n1 s的整數之和是 s n,s...