Python lambda表達式


Python lambda表達式

一.lambda基本概念


python中,lambda函數也叫匿名函數,即沒有具體名稱的函數,它允許快速定義單行函數,類似c語言的,可以用在任何需要函數的地方。用匿名函數有一個好處,因為函數沒有名字,不必擔心函數名沖突。匿名函數也是一個函數對象,也可以把**匿名函數賦值給一個變量,**在利用變量來調用該函數


實例:

f=lambda x:x*x
f(5)=25

同樣,也可以把匿名函數作為返回值返回,比如:

def f(x,y):
    
    return lambda x*x+x*y

二.lambda與def區別

  1. def創建的方法是有名稱的,而lambda沒有
  2. lambda會返回一個函數對象,但這個對象不會賦給一個標識符,而def則會把函數對象賦值給一個變量(函數名)
  3. lambda只是一個表達式,而def是一個語句
  4. lambda表達式":"后面只能有一個表達式,def則可以有多個

**

三.例子說明


python中有一個定義好的全局函數方便調用:filter,map,functools.reduce

>>> foo = [2, 18, 9, 22, 17, 24, 8, 12, 27]
>>> filter(lambda x: x % 3 == 0, foo)
<filter object at 0x0000025834193E08>
>>> list(filter(lambda x: x % 3 == 0, foo))
[18, 9, 24, 12, 27]
>>> list(map(lambda x:x%2+10,foo))
[10, 10, 11, 10, 11, 10, 10, 10, 11]
>>> functools.reduce(lambda x,y:x+y,foo)
139

定義某種排序規則
將列表[1, 2, 3, 4, 5, 6, 7, 8, 9]按照元素與5距離從小到大進行排序

>>> sorted([1, 2, 3, 4, 5, 6, 7, 8, 9], key=lambda x: abs(5-x))
[5, 4, 6, 3, 7, 2, 8, 1, 9]


免責聲明!

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



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