1. 匿名函數(shù)介紹
#這段代碼
def calc(n):
return n**n
print(calc(10))
#換成匿名函數(shù)
calc = lambda n:n**n
print(calc(10))
函數(shù)名 = lambda 參數(shù) :返回值
#參數(shù)可以有多個坤邪,用逗號隔開
#匿名函數(shù)不管邏輯多復(fù)雜,只能寫一行,且邏輯執(zhí)行結(jié)束后的內(nèi)容就是返回值
#返回值和正常的函數(shù)一樣可以是任意數(shù)據(jù)類型
2. 將函數(shù)轉(zhuǎn)換為匿名函數(shù)
練習(xí)1:
請把以下函數(shù)變成匿名函數(shù)
def add(x,y):
return x+y
答案:
add = lambda x,y:x+y
print(add(1,2))
執(zhí)行結(jié)果:
3
練習(xí)2:
跟據(jù)value的最大值沈自,顯示對應(yīng)的key
dic = {"k1":10,"k2":100,"k3":30}
def func(key):
return dic[key]
print(max(dic,key=func)) #根據(jù)返回值判斷最大值坦仍,返回值最大的那個參數(shù)是結(jié)果
執(zhí)行結(jié)果:
k2
將上述改為匿名函數(shù):
dic = {"k1":10,"k2":100,"k3":30}
print(max(dic,key=lambda k:dic[k]))
執(zhí)行結(jié)果:
k2
練習(xí)3:
def func(x):
return x>10
res = filter(func,[5,8,11,9,15])
for i in res:
print(i)
執(zhí)行結(jié)果:
11
15
改成匿名函數(shù):
res = filter(lambda x:x>10,[5,8,11,9,15])
for i in res:
print(i)
執(zhí)行結(jié)果:
11
15
練習(xí)4:
計算列表中每個數(shù)字的平方
def func(x):
return x**2
ret = map(func,[-1,2,-3,4])
for i in ret:
print(i)
執(zhí)行結(jié)果:
1
4
9
16
改成匿名函數(shù)
ret = map(lambda x:x**2,[-1,2,-3,4])
for i in ret:
print(i)
執(zhí)行結(jié)果:
1
4
9
16
3. 適合改成匿名函數(shù)的幾個內(nèi)置函數(shù)
min max filter map sorted —— lambda
匿名函數(shù)等于內(nèi)置函數(shù)