內建函式1--lambda匿名函式、sorted()排序函式、filter()篩選函式、map()對映函式
阿新 • • 發佈:2020-12-11
一.lambda匿名函式
為了解決一些簡單的需求而設計的一句話函式
#計算j的j次方 def func(j): return j**j print(func(3)) #lambda語法:函式名 = lambda 引數:返回值 f = lambda j:j**j print(f(3)) print(f.__name__)#查詢函式名
lambda表示匿名函式,是內建函式,不需要def來宣告,一句話就能宣告出一個函式
語法
函式名 = lambda 引數:返回值
注意:
1.函式的引數可以有多個,多個引數之間用逗號隔開
g = lambda a,b:a+b print(g(2,5))
2.匿名函式無論多複雜,只能寫一行,且邏輯結束後直接返回資料
3.返回值和正常的函式一樣,可以是任意資料型別
匿名函式並不是說一定沒有名字,前面的變數就是一個函式名.說它是匿名函式是因為通過__name__檢視的時候是沒有名字的,統一都叫lambda,在呼叫時沒有什麼特別之處,像正常函式呼叫即可
二.sorted()排序函式
語法:sorted(lterable,key = None, reverse = False)
lterable:可迭代物件
key:排序規則(排序函式),在sorted內部會將可迭代物件中的每一個元素傳遞給這個函式的引數.根據函式運算的結果進行排序
reverse:是否是倒敘.True:倒敘,False:正序(預設為正序)
lst = [2,7,9,10,12,6] lst2 = sorted(lst)#正序排序 print(lst) print(lst2) #lst2得到的結果為[2,6,7,9,10,12]
和函式組合使用
#根據字串長度排序 lst = ["西瓜","西紅柿","超級土豆","apple","飯"] #計算字串長度 def a(n): return len(n) print(sorted(lst,key=a)) print(sorted(lst,key=lambda s:len(s)))#使用匿名函式,效果一樣 #結果均為['飯', '西瓜', '西紅柿', '超級土豆', 'apple']
和lambda組合使用
#lambda組合使用 #根據字串長度排序 lst = ["西瓜","西紅柿","超級土豆","apple","飯"] print(sorted(lst,key=lambda s:len(s))) lst1 = [{"id":1,"name":"孫大聖","age":10000},{"id":2,"name":"八戒","age":500},{"id":3,"name":"師傅","age":18}] #按照年齡進行排序(升序) print(sorted(lst1,key=lambda n:n["age"]))
三.filter()篩選函式
語法:filter(function,lterable)
function:用來篩選的函式,在filter中會自動的把iterabale中的元素傳遞給function,然後根據function返回的True或者False來判斷是否保留此項資料
Iterable:可迭代物件
lst = [1,3,2,5,7,9,10,12,14,13,2] def a(n): if n%2==0: return n pass lst1 = filter(a,lst)#篩選偶數 print(list(lst1)) #輸出結果為[2, 10, 12, 14, 2]
lst1 = [{"id":1,"name":"孫大聖","age":10000},{"id":2,"name":"八戒","age":500},{"id":3,"name":"師傅","age":18}] #按照年齡進行排序 f = filter(lambda n:n["age"]>400,lst1)#篩選出年齡大於400的 print(list(f))
四.map()對映函式
語法:map(function,iterable)可以對可迭代物件中的每一個元素進行對映,分別執行function
計算列表中每個元素的平方,返回新列表
def func(n): return n**n mp = map(func,[1,2,3,4,5,6]) print(mp) print(list(mp)) #改寫成lambda mp = map(lambda n:n**n,[1,2,3,4,5,6]) print(mp) print(list(mp))
計算兩個列表中相同位置的資料和
#計算兩個列表相同位置的資料的和 lst1 = [1,2,3,4,5] lst2 = [2,3,4,5,6] print(list(map(lambda x=0,y=0:x+y,lst1,lst2)))