我們可以創建匿名函數,稱為:lambda 函數。這段代碼顯示如何使用 lambda 函數:
#!/usr/bin/env python f = lambda x : 2 * x print f(3)
一個返回語句是未使用過 lambda 函數,它總是返回一些東西。 lambda 函數可以包含 if 語句:
#!/usr/bin/env python f = lambda x: x > 10 print(f(2)) print(f(12))
map函數
映射的定義是 map(函數,可迭代)。它適用於一個函數可重複每一個項目。我們可以用 map(),以與列表中的lambda函數:
#!/usr/bin/env python list = [1,2,3,4,5] squaredList = map(lambda x: x*x, list) print(squaredList)
使用 lambda 函數任何地方,都可以使用正常的函數來代替。lambda 函數不是一個語句,它是一個表達式。lambda 函數不支持的語句塊。
filter函數
過濾器(函數,迭代器)創建一個新的列表的元素,函數返回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)