day17.Python中lambda表达式应用
對(duì)于簡(jiǎn)單的函數(shù),也存在一種簡(jiǎn)便的表示方式,即:lambda表達(dá)式
#普通函數(shù) 1 def func(a): 2 return a+1 3 print 'test1_func0:',func(1000) 4 #lambda表達(dá)式 5 func0 = lambda a:a+1 6 print 'test2_func0:',func0(1000)上面這種方法,都實(shí)現(xiàn)了將1000+1的結(jié)果打印出來(lái)這個(gè)功能。
lambda存在意義就是對(duì)簡(jiǎn)單函數(shù)的簡(jiǎn)潔表示。
上面是我們對(duì)calc這個(gè)匿名函數(shù)的分析,下面給出了一個(gè)關(guān)于匿名函數(shù)格式的說(shuō)明
函數(shù)名 = lambda 參數(shù) :返回值#參數(shù)可以有多個(gè),用逗號(hào)隔開(kāi) #匿名函數(shù)不管邏輯多復(fù)雜,只能寫(xiě)一行,且邏輯執(zhí)行結(jié)束后的內(nèi)容就是返回值 #返回值和正常的函數(shù)一樣可以是任意數(shù)據(jù)類(lèi)型我們可以看出,匿名函數(shù)并不是真的不能有名字。
匿名函數(shù)的調(diào)用和正常的調(diào)用也沒(méi)有什么分別。 就是 函數(shù)名(參數(shù)) 就可以了。
?
說(shuō)到lambda,這里再贈(zèng)送一些可以給lambda加buff小伙伴:
1.map函數(shù),我們使用map函數(shù)將會(huì)對(duì)列表中的所有元素進(jìn)行操作。map有兩個(gè)參數(shù)(函數(shù),列表),它會(huì)在內(nèi)部遍歷列表中的每一個(gè)元素,執(zhí)行傳遞過(guò)來(lái)的函數(shù)參數(shù)。在輸出到新列表中。
1 li = [11, 22, 33] 2 new_list = map(lambda a: a + 100, li) 輸出:[111, 122, 133]當(dāng)然,map還可以完成多個(gè)數(shù)組的相加:
li = [11, 22, 33] sl = [1, 2, 3] new_list = map(lambda a, b: a + b, li, sl) print new_list 輸出:[12, 24, 36]2.reduce函數(shù),對(duì)于序列內(nèi)所有元素進(jìn)行累計(jì)操作:
lst = [11,22,33] func2 = reduce(lambda arg1,arg2:arg1+arg2,lst) print 'func2:',func2 輸出:func2: 663.filter函數(shù),他可以根據(jù)條件對(duì)數(shù)據(jù)進(jìn)行過(guò)濾:
li = [11, 22, 33] new_list = filter(lambda arg: arg > 22, li) print new_list 輸出:[33]?
面試題練一練
現(xiàn)有兩個(gè)元組(('a'),('b')),(('c'),('d')),請(qǐng)使用python中匿名函數(shù)生成列表[{'a':'c'},{'b':'d'}]
#答案一 test = lambda t1,t2 :[{i:j} for i,j in zip(t1,t2)] print(test(t1,t2)) #答案二 print(list(map(lambda t:{t[0]:t[1]},zip(t1,t2)))) #還可以這樣寫(xiě) print([{i:j} for i,j in zip(t1,t2)]) 答案?
轉(zhuǎn)載于:https://www.cnblogs.com/maxiaotiaoshishui/p/7280090.html
總結(jié)
以上是生活随笔為你收集整理的day17.Python中lambda表达式应用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: [补档]藏宝图
- 下一篇: 读书笔记九:TCP/IP详解之广播和多播