您好,登錄后才能下訂單哦!
這篇文章主要講解了Python標(biāo)準(zhǔn)庫(kù)中內(nèi)置函數(shù)max的用法,內(nèi)容清晰明了,對(duì)此有興趣的小伙伴可以學(xué)習(xí)一下,相信大家閱讀完之后會(huì)有幫助。
max(arg1, arg2, *args[, key])
本函數(shù)是迭代對(duì)象iterable進(jìn)行比較,找出最大值返回。當(dāng)key參數(shù)不為空時(shí),就以key的函數(shù)對(duì)象為判斷的標(biāo)準(zhǔn)。
例子:
#max() array1 = range(10) array2 = range(0, 20, 3) print('max(array1)=', max(array1)) print('max(array2)=', max(array2)) print('max(array1,)=', max(array1, key=lambda x: x > 3) ) print(max(1, 2)) print(max('ah', 'bf', key=lambda x: x[1])) print(max(array1, array2, key=lambda x: x[1])) def comparator(x): return x[2] print(max('ah3', 'bf3', key=comparator))
結(jié)果輸出如下:
max(array1)= 9 max(array2)= 18 max(array1,)= 4 2 ah range(0, 20, 3) bf3
補(bǔ)充知識(shí):python之lambda表達(dá)式 : 對(duì)于python中max函數(shù)的key參數(shù)的理解與使用
新版很6,預(yù)覽效果和實(shí)際顯示不同,代碼塊那里顯示成html格式的我表示十分無(wú)語(yǔ)。將就看吧。
之前在看別人代碼的時(shí)候看到了這樣的用法:
return max(self._children.items(),
key=lambda act_node: act_node[1].get_value(c_puct))
表示對(duì)這個(gè)key值十分不解,然后上網(wǎng)一搜。哦!參考資料
lambda表達(dá)式:
其實(shí)lambda是一個(gè)匿名函數(shù),我們通常叫它lambda表達(dá)式,lambda存在意義就是對(duì)簡(jiǎn)單函數(shù)的簡(jiǎn)潔表示。
比如我們想實(shí)現(xiàn)這樣的函數(shù):
def func(arg):
return arg + 1
為了使代碼更簡(jiǎn)潔,lambda登場(chǎng),把上面的函數(shù)變形成:
lambda arg : arg + 1
所以,lambda a : b , 實(shí)際上就是:lambda是一個(gè)輸入值為a,返回值為b的函數(shù)。
max函數(shù)中的lambda表達(dá)式:
現(xiàn)在回到我們的max函數(shù)中,就十分容易理解了:
函數(shù)形式:max( x ,key=lambda a : b ) # x可以是任何數(shù)值,可以有多個(gè)x值
這個(gè)函數(shù)的意思是:我們先把x值帶入lambda函數(shù)轉(zhuǎn)換成b值,然后再將b值進(jìn)行比較。
上代碼:
haha0=max('az','za', key=lambda a: a[0]) haha1=max('az','za', key=lambda a: a[1]) haha2=max(range(10),key=lambda a:a>3) print(haha0) #輸出za print(haha1) #輸出az print(haha2) #輸出4
以haha0為例子:我們傳入az,za,為了方便解釋稱(chēng)之為虛擬比較,但是因?yàn)槲覀円肓薼ambda表達(dá)式,所以,我們實(shí)際上比較的是,az中的第一位a和za中第一位的z,由ascii碼表可以知道a是小于z的,所以在這里最大的是z,那么我們返回的就是z的虛擬比較變量,也就是本來(lái)的"za"。
haha2的用法十分少見(jiàn),實(shí)際上比較的是
F F F T T T T T T T ( False 和 True )
T是肯定比F大的,但是一堆True哪里能互相比較大小呢,所以就輸出第一個(gè)True值的虛擬比較變量,也就是4啦。
max中帶有l(wèi)ambda的這個(gè)寫(xiě)法的意義在于代碼變得更簡(jiǎn)潔。
假如我們有一個(gè)字典,里面記錄著人名和相應(yīng)年齡,現(xiàn)在我們想要在里面篩選出年齡最大的那個(gè)人的一條字典記錄。
x={"老王" :18 , "小李":99} haha3=max(x.items(), key=lambda a: a[1]) print(haha3) #輸出('小李', 99)
要注意使用字典的話(huà)一定要x.items(),不能直接輸入x值,達(dá)不到我們想要的效果。
其實(shí)我們大可不必這么寫(xiě),直接從字典中提取出年齡列表進(jìn)行比較:
x={"老王" :18 , "小李":99} y=[] for name,age in x.items(): y.append(age) haha4=max(y) print(haha4)
只是這樣寫(xiě)是比較麻煩以及浪費(fèi)內(nèi)存的不是么?我想這就是max函數(shù)中設(shè)置lambda表達(dá)式的意義。
看完上述內(nèi)容,是不是對(duì)Python標(biāo)準(zhǔn)庫(kù)中內(nèi)置函數(shù)max的用法有進(jìn)一步的了解,如果還想學(xué)習(xí)更多內(nèi)容,歡迎關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。