python中reduce函式和lambda表示式的學習
阿新 • • 發佈:2019-02-05
最近學習了reduce函式和lambda表示式的組合應用,十分方便,可以代替一些迴圈操作。
例如如下程式碼:
list = [1,2,3,4,5]
print reduce(lambda x,y:x+y,list)
其中reduce函式是python中的一個二元內建函式,它可以通過傳給reduce中的函式(必須是二元函式)依次對資料集中的資料進行操作。例如上述程式碼傳給reduce的函式是做加法,資料集是list,那麼reduce函式的作用就是將資料集中的資料依次相加,最後打印出的結果就是15。
凡是要對一個集合進行操作的,並且要有一個統計結果的,能夠用迴圈或者遞迴方式解決的問題,一般情況下都可以用reduce方式實現。在python 3.0.0.0以後, reduce已經不在built-in function裡了, 要用它就得from functools import reduce。
而其中的lambd表示式是一種精簡函式的表達方法,省略了函式的定義,命名等問題。如下函式:
def ds(x):
return 2*x+1
那麼ds(5)就是11.
用lambda表示式表示上面函式:
g = lambda x: 2*x+1
同樣g(5) = 11,這裡將函式簡化為一個表示式。