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.引用傳遞 引用傳遞的實質是傳遞記憶體位址,引用傳遞的物件是可變物件,形式引數的值是被改變的。結果為 ...