Python基礎---匿名函數
阿新 • • 發佈:2018-10-15
多參數 str ... 返回 除了 函數 python基礎 .... 一個
1 為什麽要有lambda函數
在Python語言中除了def語句用來定義函數之外,還可以使用匿名函數lambda,它是Python一種生成函數對象的表達式形式。匿名函數通常是創建了可以被調用的函數,它返回了函數,而並沒有將這個函數命名。lambda有時被叫做匿名函數也就是這個原因,需要一個函數,又不想動腦筋去想名字,這就是匿名函數。
語法:
lambda函數的語法只包含一個語句: lambda arg1,arg2,.....argn:expression
lambda 可以無參數,也可以多參數,但是語句只有一個
2 使用場景
列表的排列函數中:
list_1 = [{"name":"wang","age":10},{"name":"xiaoming","age":20},{"name":"banzhang","age":10}] infors.sort(key=lambda x:x[‘age‘]) #根據age對字典排序 print(infors) 輸出: [{‘name‘: ‘wang‘, ‘age‘: 10}, {‘name‘: ‘banzhang‘, ‘age‘: 10}, {‘name‘: ‘xiaoming‘, ‘age‘: 20}]
list_2=[‘hjkgfdk‘,‘sdfrgr‘,‘gregth‘,‘rewfrwrg‘,‘htht‘,‘qwqw‘]
list_2.sort(key=lambda x:x[2])
print(list_2)
輸出
[‘gregth‘, ‘sdfrgr‘, ‘htht‘, ‘hjkgfdk‘, ‘qwqw‘, ‘rewfrwrg‘]
用在過濾函數中,指定過濾列表元素的條件:
filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, 8, 9]) 輸出 > [3, 6, 9]
reduce()函數
>>>def add(x, y) : # 兩數相加 ... return x + y ... >>> reduce(add, [1,2,3,4,5]) # 計算列表和:1+2+3+4+5 15 >>> reduce(lambda x, y: x+y, [1,2,3,4,5]) #使用 lambda 匿名函數
15
用在map()函數中
map(lambda x: x+1, [1, 2,3]) > [2, 3, 4]
作為一個函數的參數
def transform(fun,*arg):
return fun(*arg)
print(transform(lambda x,y:x*y,1,8))
輸出:
8
Python基礎---匿名函數