Python3入門(五)——函數式編程
阿新 • • 發佈:2018-04-23
rabl rom pytho 介紹 計算 並且 span 但是 pan
一、高階函數
1.可以通過變量指向函數,達到類似別名的效果:
>>> f = abs
>>> f(-10)
10
2.函數的參數可以是函數,也就是函數可以作為一個入參
def add(x, y, f):
return f(x) + f(y)
以下介紹幾個高階函數
map、reduce
這兩個函數就不贅述了。和scala的功能類似,不過用法不一樣,它接收兩個參數,第一個是函數f,第二個是Iterable。並將計算結果作為新的Iterator返回,惰性的Iterator通過list便可以計算出結果了:
def f(x):
return x + 1
r = map(f, [1, 2, 3, 4, 5])
print(list(r))
reduce入參類似map,但是它的f是接收兩個參數,並且需要導包。並將結果作為下一次的輸入,表示起來就是:
reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
from functools import reduce
def f(x, y):
return x + y
r = reduce(f, [1, 2, 3, 4, 5])
# 註意這裏不需要list包裝了,因為返回的不是Iterator
print(r)
filter
和scala的filter也是類似了,返回Ture的留下,其它過濾掉。其他的入參和返回值與map相同
def f(x):
return x % 2 == 0
r = filter(f, [1, 2, 3, 4, 5])
print(list(r))
Python3入門(五)——函數式編程