Python隱匿之士——lambda

最近做OJ遇到了一道排序題,由於python運行一直超時,無奈之下在CSDN找該題的優化解法,雖然最終沒有解決問題但我驚喜的發現了python裏一個有趣的函數——lambda

正好在下篇文章中我將分享的嵌套列表的排序用到了lambda,所以在此介紹lambda


我們先來看一下python一般的函數的聲明

>>>def power(x,y):
	   return x**y
>>>power(2,2)
4

lambda提供了更簡潔的聲明方式

>>>power=lambda x,y:x**y
>>>power(2,2)
4

害,這lambda也不過爾爾,只是比def方便些,何必浪費筆墨介紹

諸君切記,不可管中窺豹

來看看下面這個例子

>>>(lambda x,y:x**y)(2,2)

lambda與def本質區別在於,我們不需要用一個特定的名稱來承接這個函數,只需要在lambda裏描述好函數的功能,拿來用就行

那麼lambda的返回值呢?lambda帶有一個隱式的返回值

lambda的應用

由於lambda不需要函數名的特點,它可以應用在一些函數的參數中,就比如我上文中提到的嵌套列表的排序

>>> lists=[[2,'a'],[1,'c'],[3,'b']]
>>> lists.sort(key=lambda x:x[0])
>>> lists
[[1, 'c'], [2, 'a'], [3, 'b']]

這樣我們就不用額外def一個函數來指定排列的關鍵字

與此同時,lambda帶來了降低代碼可讀性的問題,將lambda與list()、map()和filter()結合起來這種炫技着實讓人頭疼

lambda不可濫用,該歸隱山林的時候還得歸隱山林

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章