《Python3 程序開發指南》python
Lambda函數,是一個匿名函數,建立語法:express
lambda parameters:express函數
parameters:可選,若是提供,一般是逗號分隔的變量表達式形式,即位置參數。spa
expression:不能包含分支或循環(但容許條件表達式),也不能包含return(或yield)函數。若是爲元組,則應用圓括號將其包含起來。blog
調用lambda函數,返回的結果是對表達式計算產生的結果。排序
根據參數是否爲1 決定s爲yes仍是no >>> s = lambda x:"yes" if x==1 else "no" >>> s(0) 'no' >>> s(1) 'yes'
上面例子中,將if...else語句縮減爲單一的條件表達式,語法爲:three
expression1 if A else expression2element
若是A爲True,條件表達式的結果爲expression1,不然爲expression2 開發
如下舉例說明lambda函數的使用io
使用sorted()方法和list.sort()方法進行排序 elements=[(2,12,"A"),(1,11,"N"),(1,3,"L"),(2,4,"B")] >>> sorted(elements) [(1, 3, 'L'), (1, 11, 'N'), (2, 4, 'B'), (2, 12, 'A')] 根據elements每一個元組後兩項進行排序,e表示列表中每一個三元組元素 在表達式是元組,且lambda爲一個函數的參數時,lambda表達式的圓括號是必需的 >>> elements.sort(key=lambda e:(e[1],e[2])) >>> elements [(1, 3, 'L'), (2, 4, 'B'), (1, 11, 'N'), (2, 12, 'A')] 分片方式獲得一樣的效果 >>> elements.sort(key=lambda e:e[1:3]) >>> elements [(1, 3, 'L'), (2, 4, 'B'), (1, 11, 'N'), (2, 12, 'A')] >>> elements.sort(key=lambda e:(e[2].lower(),e[1])) 如下兩種方法等價,均可以經過調用area(5,3),結果相同 >>> area=lambda b,h:0.5*b*h >>> def area(b,h): return 0.5*b*h 默認字典使用,存取不不在的鍵時,建立一個新項,鍵爲這個不存在的鍵,值爲lambda函數的值 >>> import collections >>> one_dict = collections.defaultdict(lambda:-1) >>> two_dict = collections.defaultdict(lambda:(0,0)) >>> three_dict = collections.defaultdict(lambda:"No message avaliable")
斷言???