這兩天學習Python一些應用教程的時候,看到這種寫法:
return series.apply(lambda x:((x - min_val) / scale) - 1.0)
lambda是什麼東西。。。。。沒見過,於是search online,大致是說lambda是一個匿名函數,用於解決簡單函數的命名問題,通俗一點說,比如你在程式中想寫這樣一個函數
def a(x): x = x + 1 return xprint(a(2))
那麼如果你像上面那樣寫的話是不是覺得太蠢了。哦不,是太多餘了,你還得為這個函數起一個名字以便於日後閱讀,如果有一種方法不用這樣定義函數,而且只用一行就搞定,是不是很爽。這就是Lambda的作用啦,嘗試下面的寫法:
a = lambda x: x + 1print(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入門新手,第一次寫部落格,歡迎大神指教......................................