1.高階函數
高階函數就是把函數當成參數傳遞的函數。
例如:
def add(x,y,f):
return f(x) + f(y)
print add(-4,3,abs)
結果是 7
map()函數
map()函數的python內置的高階函數,他接受一個函數f 和參數list,並把list的元素傳遞給函數f,然後返回一個函數f處理完list元素的列表。
例如:
lt = [1,2,3,4,5]
def fun1(x):
return x*x
ml = map(fun1,lt)
print ml
最終返回的結果是個列表
reduce()函數
reduce函數是python內置的高階函數,reduce()函數接收的參數跟map()類似,一個函數f,一個list,但行爲和map()不同,reduce函數傳入的f必須接收2個參數,第一次調用把list的前兩個元素傳遞給f,第二次調用時就是把前兩個 元素計算結果當成第一個參數,list的第三個元素當成第二個參數,傳入f進行操作,以後以此類推,直到返回最終結果。
例如:
lis = [1,2,3,4,5]
def fun2(x,y):
return x + y
res = reduce(fun2,lis,10)
print res
計算結果是
25
解釋:
1.a = fun2(1,2) 值爲3
2.b = fun2(a,3) 值爲 6
3.c = fun2(b,4) 值爲 10
4.d = dun2(c,5) 值爲15
5,計算 f(d,10) 結果是25、
# 傳入的函數必須接收2個參數。
filter()函數
filter()函數是python內置的一個高階函數,filter()函數接收一個函數f 跟一個list.這個函數f的作用就是對每個元素進行判斷,返回true 或者false. filter()判斷的結果自動過濾掉不符合條件的元素,返回由符合條件的元素組成的新的list列表
舉例:
lis2 = [1,2,3,4,5,6,7,8,9,10]
def fun3(x):
return x % 2 == 0
rus = filter(fun3,lis2)
print (rus)
返回結果:
[2, 4, 6, 8, 10]
2.匿名函數
顧名思義就是沒有名字的函數,lambda是一種快速定義單行的最小函數,可以用在任何需要函數的地方。
例如:
def sum(x,y):
return x + y
m = lambda x,y:x+y
print (m(4,5))
print type(m)