python之Lambda函數---筆記


《Python3 程序開發指南》

Lambda函數,是一個匿名函數,創建語法:

 lambda parameters:express

parameters:可選,如果提供,通常是逗號分隔的變量表達式形式,即位置參數。

expression:不能包含分支或循環(但允許條件表達式),也不能包含return(或yield)函數。如果為元組,則應用圓括號將其包含起來。

調用lambda函數,返回的結果是對表達式計算產生的結果

根據參數是否為1 決定s為yes還是no
>>> s = lambda x:"yes" if x==1 else "no"
>>> s(0)
'no'
>>> s(1)
'yes'

  上面例子中,將if...else語句縮減為單一的條件表達式,語法為:

               expression1 if A else expression2

如果A為True,條件表達式的結果為expression1,否則為expression2 

 以下舉例說明lambda函數的使用

使用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")

  

斷言???


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM