一丶匿名函數
語法:
函數名 = lambda參數:返回值
# 普通的正常的函數 def func(n): return n * n ret = func(9) print(ret) # 匿名函數 a = lambda n : n * n ret = a(9) print(ret)
說是匿名函數,可總該有個名字吧,我們可以用__name__來查看一下名字
b = lambda x: x+1 a = lambda n : n * n print(a.__name__) # __name__的值都是<lambda> print(b.__name__) # __name__的值都是<lambda>
單個變量傳值可以這樣傳,那假如兩個或多個變量呢,該怎么樣呢?我們可以用小括號括起來,要不就會報錯
def func(x, y): return x, y print(func(1,2)) #(1,2) suiyi = lambda x, y : (1, 2) # 筆試題 print(suiyi) print(suiyi(250,38)) #(1,2)
注意:
1.函數的參數可以有多個,多個參數之間用逗號隔開
2.匿名參數不管多復雜,只能寫一行,且邏輯結束后直接返回數據
3.返回值和正常函數一樣,可以是任意數據類型
二丶sorted排序
lst = [16, 18, 32, 54, 12, 9] lst.sort() # list的方法 print(lst) #[9, 12, 16, 18, 32, 54] #內置函數中提供了一個通用的排序方案, sorted() s = sorted(lst) print(s) #[9, 12, 16, 18, 32, 54]
語法:
sorted(Iterable,key = None,reverse=False)
Iterable:可迭代對象
key:排序規則(排序函數),在sorted內部將可迭代對象的每一個元素傳遞給這個函數的參考值,根據函數運算的結果進行排序(根據權重進行排序)
reverse:是否是倒序.True:倒序,False:正序
sorted可以跟lambda組合使用
lst = [ {'name':"迪迦奧特曼","age":48}, {"name":"雷歐娜",'age':38}, {"name":"賽文","age":39}, {"name":"泰羅","age":32}, {"name":"狗哥無敵","age":28} ] ll = sorted(lst, key=lambda el: len(el['name']), reverse=False) print(ll)
三丶filter()篩選函數
語法:
filter(function,Iterable)
function:用來篩選的函數,在filter中會自動的把iterable中的元素傳遞給function.然后根據function返回的True或者False來判斷是否保留此項數據
Iterable:可迭代對象
lst = ["張無忌", "張鐵林", "馬丹", "曹丹","馬大帥"] def func(el): if el[0] == '張': return False # 不想要的 else: return True # 想要的 # 篩選, # 將lst中的每一項傳遞給func, 所有返回True的都會保留, 所有返回False都會被過濾掉 f = filter(lambda el: el[0]!="張", lst) print("__iter__" in dir(f)) # 判斷是否可以進行迭代 for e in f: print(e)
四丶map()映射函數
語法:
map(function,Iterable)
可以對可迭代對象中的每一個元素進行映射,分別取執行function
# 計算列表中沒個數字的平方 #普通函數 lst = [1,4,7,2,5,8] ll = [] for el in lst: ll.append(el**2) print(ll) #映射 def func(el): return el**2 m = map(lambda el: el**2, lst) # 把后面的可迭代對象中的每一個元素傳遞給function, 結果就是function的返回值 print(list(m))