lambda函數

lambda函數也叫匿名函數,就是沒有函數名的函數。lambda表達式基於數學中的λ演算得名,直接對應於其中的lambda抽象。html

lambda函數的語法只包含一個語句:

lambda [arg1 [,arg2,.....argn]]:expression
  • 冒號前面的是參數,能夠有多個,用逗號隔開,冒號右邊的是返回值。lambda語句構建的實際上是一個函數對象。

例以下面這段代碼,實現兩個數相乘:express

def fun(x, y):
    return x * y

print(fun(2,3))  # 6

若是咱們使用lambda來寫的話,一個lambda 表達式就能夠搞定,不須要使用def :編程

fun = lambda x, y: x * y
print(fun(2, 3))  # 6

lambda使用

lambda相較於普通函數來講更加簡潔,可是卻不能共享在別的地方調用。因此通常是這個代碼不須要別的地方複用,能夠考慮使用lambda,這樣的話能夠省略給函數命名。函數式編程

  • Python提供了不少函數式編程的特性,如filter、reduce、map、sorted等都支持函數做爲參數,lambda函數就能夠應用在函數式編程中。
# filter
list1 = [3, 12, 9, 25, 17, 36, 14, 17, 27]
list2 = filter(lambda x: x % 3 == 0, list1)
print(list(list2))  # [3, 12, 9, 36, 27]

# map
list1 = [3, 12, 9, 25, 17, 36, 14, 17, 27]
list2 = map(lambda x: x * 10, list1)
print(list(list2))  # [30, 120, 90, 250, 170, 360, 140, 170, 270]

# reduce
from functools import reduce
list1 = [3, 12, 9, 25, 17, 36, 14, 17, 27]
print(reduce(lambda x, y: x * y, list1))  # 31854967200

總結lambda 的使用其實很簡單,但注意不要盲目去使用lambda ,要看具體須要再使用它。函數

參考:https://www.9xkd.com/user/plan.htmlcode

相關文章
相關標籤/搜索