天天看點

Python函數式程式設計——lambda()、map()、reduce()、filter()

函數式程式設計(Functional Programming),又稱泛函程式設計,是一種程式設計範式,将計算機運算視為數學上的函數計算。

使用函數式程式設計,兼顧簡潔和效率,循環速度比Python内置的for或while循環要快得多。

在Python中,函數式程式設計主要由幾個函數的使用構成:lambda()、map()、reduce()、filter()

1、lambda()

用來定義“行内函數”。

2、map()

根據提供的函數對指定序列做映射。

a = [1,2,3]
b = map(lambda x:x+2,a)
b = list(b) #python3.x需要這一步,因為在python3.x中,map函數僅僅建立一個待運作的指令容器,隻有其他函數調用它,才傳回結果。以下類推。
           

map()函數也接受多參數的函數,

map(lambda x,y:x*y,a,b) #将a、b兩個清單的元素對應相乘
           

3、reduce()

對參數序列中元素進行累計。

n=5
reduce(lambda x,y:x*y,range(1,n+1))
           

結果為120。

4、filter()

用于過濾序列,過濾掉不符合條件的元素,傳回由符合條件元素組成的新清單。

b = filter(lambda x:x>5 and x<8,range(10))
           

結果是[6,7]。