1. 程式人生 > >python中reduce函式和lambda表示式的學習

python中reduce函式和lambda表示式的學習

最近學習了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,這裡將函式簡化為一個表示式。