Python之匿名函數

一、介紹

也叫 lambda 表達式ide

a.匿名函數的核心:一些簡單的須要用函數去解決的問題,匿名函數的函數體只有一行函數

b.參數能夠有多個,用逗號隔開spa

c.返回值和正常的函數同樣能夠是任意的數據類型3d

d.匿名函數不支持複雜的邏輯判斷code

e.通常跟其餘函數搭配使用對象

普通函數與匿名函數的對比:blog

#普通函數
def add(a,b):
    return a + b
 
print(add(2,3))


#匿名函數
add = lambda a,b : a + b  # 至關與 return a+b
print add(2,3)
 
正確用法:
print((lambda a,b:a+b)(4,5))


二、匿名函數練習

li = list(range(10))
print(max(li, key=lambda x: li[li.index(x)]))
比較數大小
salaries={
'egon':3000,
'alex':100000000,
'wupeiqi':10000,
'yuanhao':250
}

# 普通函數
def get_value(k):
    return salaries[k]

# print(max(salaries,key=get_value))
# print(min(salaries,key=get_value))

# 匿名函數
print(max(salaries,key=lambda x:salaries[x]))   # 取誰的工資最大
# 先  next salaries,獲得 鍵名,定義匿名函數 key=lamdba x:salaries[x]
# lamdba x # x 是匿名函數須要的參數,由  salaries[x] 來提供,[x]裏的 x 是前面獲得的 鍵名,獲得鍵值,經過鍵值來進行排序後,返回鍵名
取誰的工資最大
data = list(range(10))
print(list(map(lambda x: x*x, data)))
搭配map函數
str =['a','b','c','d']
def fun(s):
    if s != 'a':     # 過濾條件,若是不等於,返回值
        return s 
ret = filter(fun,str)  # 格式:filter(函數名,序列),遍歷序列
print(list(ret))   #['b', 'c', 'd']  顯示過濾結果,bcd 不等於 a
print(ret)   # <filter object at 0x0000000001044240> 便是過濾器對象,也是一個迭代器對象  

例2:
name_l=[{'name':'egon','age':18},
        {'name':'alex','age':1000},
        {'name':'yuanhao','age':2000}]

res=filter(lambda d:d['age']>100,name_l)
print(res)   # 返回 filter 對象
for i in res:   # 遍歷對象
    print(i)
=====
{'age': 1000, 'name': 'alex'}
{'age': 2000, 'name': 'yuanhao'}
搭配filter函數


.排序

相關文章
相關標籤/搜索