python之Lambda函數---筆記

《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")

  

斷言???

相關文章
相關標籤/搜索