Python標準庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明
max(arg1, arg2, *args[, key])
本函數(shù)是迭代對象iterable進行比較,找出最大值返回。當key參數(shù)不為空時,就以key的函數(shù)對象為判斷的標準。
例子:
#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('ah2', 'bf3', key=comparator))
結(jié)果輸出如下:
max(array1)= 9 max(array2)= 18 max(array1,)= 4 2 ah range(0, 20, 3) bf3
補充知識:python之lambda表達式 : 對于python中max函數(shù)的key參數(shù)的理解與使用
新版很6,預覽效果和實際顯示不同,代碼塊那里顯示成html格式的我表示十分無語。將就看吧。
之前在看別人代碼的時候看到了這樣的用法:
return max(self._children.items(),
key=lambda act_node: act_node[1].get_value(c_puct))
表示對這個key值十分不解,然后上網(wǎng)一搜。哦!參考資料
lambda表達式:
其實lambda是一個匿名函數(shù),我們通常叫它lambda表達式,lambda存在意義就是對簡單函數(shù)的簡潔表示。
比如我們想實現(xiàn)這樣的函數(shù):
def func(arg):
return arg + 1
為了使代碼更簡潔,lambda登場,把上面的函數(shù)變形成:
lambda arg : arg + 1
所以,lambda a : b , 實際上就是:lambda是一個輸入值為a,返回值為b的函數(shù)。
max函數(shù)中的lambda表達式:
現(xiàn)在回到我們的max函數(shù)中,就十分容易理解了:
函數(shù)形式:max( x ,key=lambda a : b ) # x可以是任何數(shù)值,可以有多個x值
這個函數(shù)的意思是:我們先把x值帶入lambda函數(shù)轉(zhuǎn)換成b值,然后再將b值進行比較。
上代碼:
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,為了方便解釋稱之為虛擬比較,但是因為我們引入了lambda表達式,所以,我們實際上比較的是,az中的第一位a和za中第一位的z,由ascii碼表可以知道a是小于z的,所以在這里最大的是z,那么我們返回的就是z的虛擬比較變量,也就是本來的"za"。
haha2的用法十分少見,實際上比較的是
F F F T T T T T T T ( False 和 True )
T是肯定比F大的,但是一堆True哪里能互相比較大小呢,所以就輸出第一個True值的虛擬比較變量,也就是4啦。
max中帶有l(wèi)ambda的這個寫法的意義在于代碼變得更簡潔。
假如我們有一個字典,里面記錄著人名和相應(yīng)年齡,現(xiàn)在我們想要在里面篩選出年齡最大的那個人的一條字典記錄。
x={"老王" :18 , "小李":99}
haha3=max(x.items(), key=lambda a: a[1])
print(haha3) #輸出('小李', 99)
要注意使用字典的話一定要x.items(),不能直接輸入x值,達不到我們想要的效果。
其實我們大可不必這么寫,直接從字典中提取出年齡列表進行比較:
x={"老王" :18 , "小李":99}
y=[]
for name,age in x.items():
y.append(age)
haha4=max(y)
print(haha4)
只是這樣寫是比較麻煩以及浪費內(nèi)存的不是么?我想這就是max函數(shù)中設(shè)置lambda表達式的意義。
以上這篇Python標準庫:內(nèi)置函數(shù)max(iterable, *[, key, default])說明就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python實現(xiàn)圖片格式轉(zhuǎn)換小程序
這篇文章主要為大家詳細介紹了Python實現(xiàn)圖片格式轉(zhuǎn)換小程序,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下2022-08-08
Python圖像處理之直線和曲線的擬合與繪制【curve_fit()應(yīng)用】
這篇文章主要介紹了Python圖像處理之直線和曲線的擬合與繪制,結(jié)合實例形式分析了Python曲線擬合相關(guān)函數(shù)curve_fit()的使用技巧,需要的朋友可以參考下2018-12-12
python實現(xiàn)文字轉(zhuǎn)語音的項目實踐
pyttsx3是一個Python庫,用于文字轉(zhuǎn)語音的功能,它可以將文本轉(zhuǎn)換為語音,并使用不同的音頻引擎進行輸出,本文就來詳細的介紹一下用法,具有一定的參考價值,感興趣的可以了解一下2023-08-08
Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例
今天小編就為大家分享一篇Python+Pandas 獲取數(shù)據(jù)庫并加入DataFrame的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-07-07

