Python 中的高階函式

2021-07-29 16:54:55 字數 1605 閱讀 4486

python中的高階函式和其他語言一樣分別有以下幾個:

map(fn,list)//對映;

filter(fn,list);//過濾只返回滿足條件的元素sorted(list,key);//序列排序reduce(fn,list)//兩兩對折,返回乙個唯一數值

這幾位在語法結構和引數的先後順序上會同其他語言有所不同,但是在意義上並無二至。

scores = [98,78,32,31,55,90,79];

defpas***am

(arg):

return arg > 60;

check = list(filter(pas***am,scores));

print(check)

上邊這段**是一段很簡單的過濾學生成績的**,我們在這段**中可以看出來filter()函式的外面包裹了乙個list()函式,原因就在於filter()函式過濾後都是16進製制的資料,需要list()函式進行轉換。map()函式一樣如此。

reduce()的用法中有乙個坑,那就是py2和py3的不相容。

scores = [98,78,32,31,55,90,79];

defsum

(arga,argb):

return arga+argb;

allstudents = reduce(sum,scores);

print(allstudents)

上面是乙個很簡單的py2的reduce求學生總分的演算法。但是在py3版本中就會報錯。這是由於py3版本中reduce已經從內建函式中刪除,必須從functool中import進來。

最後,我們來看下排序演算法,sorted():

我們可以看下最普通的排序:

scores = [98,78,32,31,55,90,79];

sort = sorted(scores);

print(sort)

//[31, 32, 55, 78, 79, 90, 98]

這就比js這種還要自己編寫函式的不知道高到**去了,可以直接對數字進行排序。

我們再看看下面這段**:

scores = [98,-8,-32,-31,55,90,79];

sort = sorted(scores,key=abs);

print(sort)

//[-8, -31, -32, 55, 79, 90, 98]

這段**的核心點在於key=abs這個作為第二個引數的賦值表示式。它表示在排序時,給元素按照絕對值進行排序。因為這個功能,所以python在排序方面比其他很多語言都要強大很多,比如可以根據字母的大小寫,'z'>'a'進行大小寫分類,也可以忽略大小寫str.lower.也可以新增第三個引數reverse= true進行反向排序。

python中的高階函式

高階函式 能接收函式作為引數的函式。一 map f,list python內建的乙個高階函式,需要乙個函式和乙個list作為引數,傳進來的函式會一一作用於list中的每個元素,然後返回乙個新的list。二 reduce f,list python內建的乙個高階函式,同樣,需要乙個函式和list作為引...

python中的高階函式

高階函式 高階函式是至少滿足下列乙個條件的函式 1.接受乙個或多個函式作為輸入 2.輸出乙個函式 print sum 1,2,3 6 sum 是python自己的求和函式 b sum 這裡用乙個b去等於sum print b 1,2,3 6 b 就具有和sum 函式一樣的功能 我們定義乙個高階函式 ...

Python中的高階函式

函式 1 引用傳遞 2 可變引數 命名引數 萬能引數 3 匿名函式 lambda 4 閉包 有點難 5 遞迴 6 偏函式 7 函式作為引數傳遞 8 函式呼叫全域性變數 9 全域性變數和區域性變數 1.引用傳遞 引用傳遞的實質是傳遞記憶體位址,引用傳遞的物件是可變物件,形式引數的值是被改變的。結果為 ...