1. 程式人生 > >匿名函數-lambda

匿名函數-lambda

args color pytho -- 條件 list 解決 lse 三元

匿名函數

匿名函數:為了解決一些功能很簡單的需求而設計的一句話函數 (python對匿名函數支持有限,只有一些簡單的條件下可以用匿名函數)

匿名函數固定格式:

func = lambda *args: args**2            #func:函數名    lambda:關鍵字     args:參數    args**2:返回值(參數的平方運算)

示例:

def func(n):
    return n*2
print(func(5))          #10
等價於:
func = lambda n:n*2         #匿名函數,又叫 lambda表達式
print(func(5))          #
10

匿名函數能和 三元表達式,列表推導式,生成器表達式 一起用

func1 = lambda n: True if n > 5 else False   # 匿名函數+三元表達式
print(func1(4))      #False

func2 = lambda : [i for i in range(10)]      # 匿名函數+列表推導式
print(func2())
#[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

func3 = lambda : (i for i in range(10))      # 匿名函數+生成器表達式
print(list(func3()))        #
func3是生成器,強制list()取值 #[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] 復制代碼

匿名函數和 map(),filter(),soted(),max(),min() 一起用

字典:拿到最大值的鍵 

dic = {k1:10,k2:100,k3:30}

func = lambda key: dic[key]          # 返回鍵的值
t = max(dic,key=func)                # dic等價於[‘k1‘,‘k2‘,‘k3‘]  key=func()拿到每個key的值,用值對比
#max(dic,key=lambda k:dic[k])        # 可以直接把匿名函數寫成這樣 (max() + lambda匿名函數)
print(t) # k2 想當於: def func(key): return dic[key] a = max(dic,key=func) # max([-5,2,-4,3],key=abs) print(a) # k2 ------------ a = (map(lambda n: n**2,[1,2,3,4])) #lambda 匿名函數+ map() print(list(a)) #[1, 4, 9, 16] --------- (((a),(b)),((c),(d))) 用匿名函數寫成[{a: c}, {b: d}] (((a),(b)),((c),(d))) # 等價於 ((‘a‘,‘b‘),(‘c‘,‘d‘)) print((‘a‘) == ‘a‘) True r = zip((a,b),(c,d)) # [(‘a‘, ‘c‘), (‘b‘, ‘d‘)] t = map(lambda n: {n[0]:n[1]},r) # n 是 r 中的元組元素 print(list(t)) # [{‘a‘: ‘c‘}, {‘b‘: ‘d‘}]

匿名函數-lambda