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 == 0
為 True
的元素。
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)