1. 程式人生 > >Python學習--Lambda使用

Python學習--Lambda使用

這兩天學習Python一些應用教程的時候,看到這種寫法:


return series.apply(lambda x:((x - min_val) / scale) - 1.0)

lambda是什麼東西?????沒見過,於是search online,大致是說lambda是一個匿名函式,用於解決簡單函式的命名問題,通俗一點說,比如你在程式中想寫這樣一個函式

def a(x):
    x = x + 1
    return x
print(a(2))

那麼如果你像上面那樣寫的話是不是覺得太蠢了?哦不,是太多餘了,你還得為這個函式起一個名字以便於日後閱讀,如果有一種方法不用這樣定義函式,而且只用一行就搞定,是不是很爽?這就是Lambda的作用啦,嘗試下面的寫法:

a = lambda x: x + 1
print(a(2)) 

程式碼看起來是不是簡潔了不少?或許這個例子並不能說明lambda的便利之處,但現在再回過頭來看看最上面的那個例子,如果你寫了一個函式

def a(x):
    x = (x - min_val) / scale) - 1.0
    return x 

而這個函式在整個程式中僅僅在這裡使用了一次,那是不是很多餘?而對比最上面的那種寫法,lambda的便利指出一目瞭然。下面具體解釋一下,lambda後面的x是作為函式引數,就是我們常說的形參,冒號後面跟函式實體,單獨使用lambda函式時只能傳入單個引數,也就是隻能對一個數進行運算,而運用map()函式也可以將lambda函式應用在列表中:

foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
reslut = map(lambda x: x+1, foo )
print(list(reslut))

help(map)的結果如下


製作一個迭代器,使用來自每個迭代器的引數計算函式。 當最短的迭代器耗盡時停止。(google翻譯)

map()函式產生一個迭代器,用來迭代列表中的每個元素,將lambda函式應用到每個元素上,list()函式將迭代器的返回值轉換成列表輸出。


Python入門新手,第一次寫部落格,歡迎大神指教......................................