說明
函數式程式設計是使用一系列函數去解決問題,按照一般程式設計思維,面對問題時我們的思考方式是“怎麼幹”,而函數函數式程式設計的思考方式是我要“幹什麼”。在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 | 個人部落格