一、高階函式
(1)高階函式的實參是乙個函式名
(2)函式的返回值是乙個函式
函式本身也可以賦值給變數,變數也可以指向函式
f = abs
print(f(-10))
傳遞的引數包括函式名
def fun(x,y,f):
return f(x),f(y)
print(fun(-10,34,abs))
1. map()函式
map():接收兩個引數,乙個是函式,乙個是序列,map將傳入的函式依次作用到序列的每個元素,並把結果作為新的序列返回
(1)對於序列[ -1,3,-5,-2]的每個元素求絕對值
print(list(map(abs,[-1,3,-5,-2])))
(2)有10個2-7之間的隨機數,對每個元素求階乘
(3)將字串轉化成列表型別
s = '1 3 5 7 9'
print(list(map(int,s.split())))
2. reduce函式
把乙個函式作用在乙個序列上,這個函式必須接收兩個引數,reduce把結果繼續和序列的下乙個元素做累積計算。也就是reduce(f,[x1,x2,x3,x4,x5]) = f(f(f(x1,x2),x3),x4)
from functools import reduce
def multi(x,y):
return x*y
print(reduce(multi,range(1,5)))
3. filter過濾函式
接收乙個函式乙個序列,filter把傳入的函式依次作用於每個元素,根據返回值是true還是false決定保留還是丟棄該元素
def isodd(num):
if num % 2 == 0:
return true
else:
return false
print(list(filter(isodd,range(1,101))))
4. sorted函式:排序函式
預設sort和sorted由小到大排序,reverse=true由大到小排序
#按照商品數量進行排序
def sorted_by_count(x):
return x[1]
#按照商品**排序
def sorted_by_price(x):
return x[2]
#先按照商品數量由小到大排序,如果商品數量一樣,則按照商品**由小到大排序
練習:給定乙個整形陣列, 將陣列中所有的0移動到末尾, 非0項保持不變;在原始陣列上進行移動操作, 勿建立新的陣列;
輸入:第一行是陣列長度, 後續每一行是陣列的一條記錄,如 1 0 2 8 0 0
輸出:調整後陣列的內容,輸出結果為 1 2 8 0 0 0
5. 匿名函式
關鍵字為lambda,冒號前面是形參,冒號後面是返回值
(1)使用匿名函式求和
from functools import reduce
print(reduce(lambda x,y:x+y,[1,2,3,4,5]))
(2)找出1-100之間的所有偶數
print(list(filter(lambda x:x%2==0,range(1,101))))
nums = [0, 7, 0, 1, 2, 1, 5,1, 7, 8, 0, 67, 1, 3, 4]
print(sorted(nums,key=lambda x:1 if x == 0 else 0))
Python之高階函式
一 什麼是高階函式 函式作為實參傳遞給函式的或者函式名為返回值的函式稱為高階函式。1 實參傳遞給函式 2 函式名為返回值 二 系統內建的高階函式 1 map函式 至少需要兩個引數,第乙個引數是函式名,第二個引數是序列 str,list,tuple map功能 把序列中的每乙個元素作為引數,傳給函式進...
Python之高階函式
做過swift開發的童鞋都知道,在swift中有許多的高階函式 map,filter,reduce,zip等 這些在開發中讓我們節省大量 python中同樣有許多的內建函式,但是這裡也只介紹幾個常用的高階函式 根據提供的函式對指定序列做對映,並返回對映後的序列 map function,iterab...
python之高階函式
函式程式設計及其優勢 無 不修改狀態,表示式形式,專注與計算,接近自然語言。便於 熱公升級,無狀態不用考慮併發過程中的資源搶占及鎖問題。函式也是物件,也可以賦值給變數,當然函式的引數也可以為另一函式。map 是 python 內建的高階函式,它接收乙個函式 f 和乙個 list,並通過把函式 f 依...