Python lambda 函式

我們可以建立匿名函式,稱為 lambda 函式。lambda 函式與普通的 Python 函式不同,它們來自 Lambda Calculus。它允許你編寫非常短的函式。

Python lambda 函式示例

此程式碼顯示了 lambda 函式的用法:

#!/usr/bin/env python
 
f = lambda x : 2 * x
print f(3)

return 語句從不在 lambda 函式中使用,因為 lambda 總是會返回資料。 lambda 函式可以包含if 語句

#!/usr/bin/env python
 
f = lambda x: x > 10
print(f(2))
print(f(12))

Python map 函式

map 的定義是 map(function,iterable)。它將函式應用於可迭代物件中的每個元素。我們可以在帶有列表的 lambda 函式上使用 map()

#!/usr/bin/env python
 
list = [1,2,3,4,5]
squaredList = map(lambda x: x*x, list)
print(squaredList)

在使用 lambda 函式的任何地方,你都可以使用普通函式。lambda 函式不是一個語句,它是一個表示式。lambda 函式不支援語句塊。

Python filter 函式

filter(function,iterable) 從元素中建立一個新列表,函式返回 True。例:

#!/usr/bin/env python
 
list = [1,2,3,4,5,6,7,8,9,10]
newList = filter(lambda x: x % 2 == 0, list)
print(newList)

返回列表返回僅包含 lambda 表示式 lamba x:x%2 == 0True 的元素。

reduce 函式

reduce 函式 reduce(function, iterable) 從左到右累加兩個引數到可迭代物件的元素。例:

#!/usr/bin/env python
 
list = [1,2,3,4,5]
s = reduce(lambda x,y: x+y,  list)
print(s)

在這種情況下,表示式始終為 True,因此它只是累加列表的元素。另一個例子:

#!/usr/bin/env python
 
list = [10,6,7,5,2,1,8,5]
s = reduce(lambda x,y: x if (x > y) else y, list)
print(s)