python中lambda的使用

lambda概述:

  • lambda只是一個表達式,函數體比def簡單很多。
  • lambda的主體是一個表達式,而不是一個代碼塊。僅僅能在lambda表達式中封裝有限的邏輯進去。
  • lambda表達式是起到一個函數速寫的作用。允許在代碼內嵌入一個函數的定義。
1.定義了一個lambda表達式,求三個數的和。
f = lambda x,y,z : x+y+x
f(1,4,5)

結果:

6

f = lambda x,y,z : x+y+z
f(1,4,5)

結果:

10

2.用lambda表達式求n的階乘。

補充知識點:reduce函數。此時lambda函數用於指定列表中兩兩相鄰元素的結合條件。 例如reduce(lambda a, b: ‘{}, {}’.format(a, b), [1, 2, 3, 4, 5, 6, 7, 8, 9])將列表 [1, 2, 3, 4, 5, 6, 7, 8, 9]中的元素從左往右兩兩以逗號分隔的字符的形式依次結合起來,其結果是’1, 2, 3, 4, 5, 6, 7, 8, 9’。

from functools import reduce
n = 5
reduce(lambda x,y: x*y,(range(1,6)))

結果:

120

3.lambda表達式也可以用在def函數中。
def action(x):
    return lambda y: x+y
# a = 2+x 或 a = 2 + y 
a = action(2)
a(22)

結果:

24

說明:
這裏定義了一個action函數,返回了一個lambda表達式。其中lambda表達式獲取到了上層def作用域的變量名x的值。
a是action函數的返回值,a(22),即是調用了action返回的lambda表達式。
這裏也可以把def直接寫成lambda形式。如下:

b = lambda x : lambda y : x + y 
a = b(3) # a = lambda x : x + 3
a(2)

結果:

5

(b(2))(2)

結果:

4

發佈了27 篇原創文章 · 獲贊 8 · 訪問量 1萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章