lambda 爲關鍵字,是實現python中單行最小函數。
lambda x:y
說明: x是入參,y是表達式
g = lambda x:x * 2
相當於
def g(x):
return x*2
Eg1:
print [(lambda x : x*x - 4)(x) for x in range(4)]
>>>
[-4, -3, 0, 5]
print (lambda x:x*x - 4)(3)
>>> 5
g = lambda x: x*x-4
for i in range(10):
print g(i)
>>>
-4 -3 0 5 12 21 32 45 60 77
Filter
filter(function, sequence)
函數功能:對sequence 中的item依次執行function(item),將執行結果爲True的item組成一個List/String/Tuple(取決於sequence的類型)
參數說明:
function 爲函數
sequence 爲列表/元組/字符串
返回值:
item列表/元組/字符串
Eg2:
print filter(lambda x:x*x-4,range(10))
>>>
[0, 1, 3, 4, 5, 6, 7, 8, 9]
Map
map(function, sequence)
函數功能:對sequence中的item依次執行function(item),將執行結果function(item)組成一個List返回。
參數說明:
function 爲函數
sequence 爲列表/元組/字符串,有多少個列表就應該有多少個入參,具體例子見Eg3.2.
返回值:
function(item)列表
Eg3.1:
print map(lambda x:x*x-4,range(10))
>>>
[-4, -3, 0, 5, 12, 21, 32, 45, 60, 77]
Eg3.2:
print map(lambda x, y:x*y-4,range(3),[8,9,10])
>>>
[-4, 5, 16]
Reduce
reduce(function, sequence, starting_value)
函數說明:
對sequence中的item順序迭代調用function,如果有starting_value,可作爲初始值調用。
function接收的參數個數只能爲2,先把sequence中的第一個和第二個值當參數傳給function,再把function的返回值和第三個值當參數傳給function,然後只返回一個結果。
參數說明:
function 爲函數
sequence 爲列表/元組/字符串
starting_value 爲初始值
返回值:
數值結果
Eg4:
print reduce(lambda x,y:x*y-4,range(4))
>>>
-40
print reduce(lambda x,y:x+y, range(101))
#計算0到100的和
>>>
5050
print reduce(lambda x,y:x+y, range(101),100)
>>>
5150
參考文章鏈接:
https://www.cnblogs.com/yufeihlf/p/6179982.html
http://www.runoob.com/python/python-func-filter.html