天天看點

【python學習筆記】Python函數式程式設計

說明

函數式程式設計是使用一系列函數去解決問題,按照一般程式設計思維,面對問題時我們的思考方式是“怎麼幹”,而函數函數式程式設計的思考方式是我要“幹什麼”。在Python中有lambda,map,reduce,filter等内置方法。

匿名函數(lambda)

文法

lambda args: expression

參數(args)的文法與普通函數一樣,同時表達式(expression)的值就是匿名函數調用的傳回值;而lambda表達式傳回這個匿名函數。

原始方法

L1 = ]
L2 = []
for i in range(len(L1)): #模拟經典for循環
    if L1[i] >:
        lst2.append(L2[i])
           

使用匿名函數的函數式方法

map函數

map函數是每次隻對一個資料進行處理

Map接受一個方法和一個集合作為參數。它建立一個新的空集合,以每一個集合中的元素作為參數調用這個傳入的方法,然後把傳回值插入到新建立的集合中。最後傳回那個新集合。

def to_lower(item):
    return item.lower()

# name = map(lambda n: n.lower(),['LeaSon','Baidu','Qq'])
name = map(to_lower,['LeaSon','Baidu','Qq'])
print name

>>> ['leason', 'baidu', 'qq']
           

Reduce函數

Reduce函數每次是需要對兩個資料進行處理的,

Reduce 接受一個方法和一個集合做參數。傳回通過這個方法疊代容器中所有元素産生的結果。

第一次疊代在這之前沒有疊代結果傳進來。reduce() 使用集合中的第一個元素作為第一次疊代

def add(a,b):
    return a+b

# result = reduce(lambda a,b:a+b,[1,2,3])
result = reduce(add,[,,])
print result

>>> 
           

函數式程式設計特點:

1)代碼更簡單了。

2)資料集,操作,傳回值都放到了一起。

3)你在讀代碼的時候,沒有了循環體,于是就可以少了些臨時變量,以及變量倒來倒去邏輯。

4)你的代碼變成了在描述你要幹什麼,而不是怎麼去幹。

leason | 個人部落格