lambda存在意義就是對簡單函數(shù)的簡潔表示泻蚊。
#普通函數(shù)
def func(a):
return a+1
print 'test1_func0:',func(1000)
#lambda表達式
func = lambda a:a+1
image.png
匿名函數(shù)格式的說明
函數(shù)名 = lambda 參數(shù) :返回值
#參數(shù)可以有多個荆虱,用逗號隔開
#匿名函數(shù)不管邏輯多復(fù)雜先誉,只能寫一行拌阴,且邏輯執(zhí)行結(jié)束后的內(nèi)容就是返回值
#返回值和正常的函數(shù)一樣可以是任意數(shù)據(jù)類型
常見應(yīng)用
1.map函數(shù)绍绘,我們使用map函數(shù)將會對列表中的所有元素進行操作。map有兩個參數(shù)(函數(shù)迟赃,列表)陪拘,它會在內(nèi)部遍歷列表中的每一個元素,執(zhí)行傳遞過來的函數(shù)參數(shù)纤壁。在輸出到新列表中左刽。
li = [11, 22, 33]
new_list = map(lambda a: a + 100, li)
# 輸出:[111, 122, 133]
li = [11, 22, 33]
sl = [1, 2, 3]
new_list = map(lambda a, b: a + b, li, sl)
# 輸出:[12, 24, 36]
2.reduce函數(shù),對于序列內(nèi)所有元素進行累計操作:
lst = [11,22,33]
func2 = reduce(lambda arg1,arg2:arg1+arg2,lst)
# 輸出:func2: 66
3.filter函數(shù)酌媒,他可以根據(jù)條件對數(shù)據(jù)進行過濾:
li = [11, 22, 33]
new_list = filter(lambda arg: arg > 22, li)
# 輸出:[33]
現(xiàn)有兩個元組(('a'),('b')),(('c'),('d'))欠痴,請使用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))))
#還可以這樣寫
print([{i:j} for i,j in zip(t1,t2)])