python開發函數進階:匿名函數
阿新 • • 發佈:2017-08-06
參數 values cal key 多個 map [0 解決 lambda
一,匿名函數
#簡單的需要用函數去解決的問題 匿名函數的函數體 只有一行
#也叫lambda表達式
# cal2(函數名) = lambda n(參數) : n*n(參數怎麽處理,並且返回值)
#參數可以有多個,用逗號隔開
#匿名函數不管邏輯多復雜,只能寫一行,且邏輯執行結束後的內容就是返回值
#返回值和正常的函數一樣可以是任意數據類型
1.函數和匿名函數
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 def cal(n): 5 return n*n 6 print(cal(10)) 7 cal2 = lambda n:n*n 8 print(cal2(10)) 9 10 def add(x,y): 11 return x+y 12 print(add(1,2)) 13 add2 = lambda x,y : x+y 14 print(add2(1,2)) 15 16 #查找大於10的數字 17 l = [10,11,8,12] 18 def func(x): 19 return x>10 20 print(list(filter(func,l))) 21 print(list(filter(lambda x:x>10,l))) 22 23 #數字冪次方運算 24 def pow2(x): 25 returnx*x 26 map(pow2,l) 27 print(list(map(lambda x:x*x , l)))
2.匿名函數真的可以匿名,在和其他函數合作的時候
1 #!/usr/bin/env python 2 #_*_coding:utf-8_*_ 3 4 #查詢字典Value值最大的 5 dic={‘k1‘:10,‘k2‘:100,‘k3‘:30} 6 print(max(dic)) #K3 7 func = lambda k:dic[k] #values 8 print(max(dic,key = func)) 9 print(max(dic,key = lambdak:dic[k])) 10 #運行邏輯 dic >> lambda >> max >> key #模糊 11 12 13 #現有兩個元組((‘a‘),(‘b‘)),((‘c‘),(‘d‘)),請使用python中匿名函數生成列表[{‘a‘:‘c‘},{‘b‘:‘d‘}] 14 #第一種 15 t1 = ((‘a‘),(‘b‘)) 16 t2 = ((‘c‘),(‘d‘)) 17 print(list(zip(t1,t2))) #[(‘a‘, ‘c‘), (‘b‘, ‘d‘)] 18 print(list(map(lambda t:{t[0]:t[1]} ,zip(t1,t2)))) #zip拉鏈成列表 map有解壓法 19 20 #第二種 21 print([{i:j} for i,j in zip(t1,t2)]) #item = (‘a‘, ‘c‘) i,j = ‘a‘, ‘c‘ 元祖的解包 22 func = lambda t1,t2 : [{i:j} for i,j in zip(t1,t2)] #右邊是返回值 23 ret = func(t1,t2) 24 print(ret)
python開發函數進階:匿名函數