Python 内建函数 max/min的高级用法
max/min 函數(shù)
Python 中的 max/min函數(shù)是用來(lái)獲取傳入?yún)?shù)的最大值或最小值的,其運(yùn)行機(jī)制都一樣,所以這里主要描述 max 的運(yùn)行機(jī)制以及使用方法。
最簡(jiǎn)單的用法,就是直接傳入兩個(gè)要對(duì)比的元素,可以返回其兩個(gè)元素中的最大值。因?yàn)槭褂煤芎?jiǎn)單,這里不做過(guò)多介紹。
那么重點(diǎn)說(shuō)一下這兩個(gè)內(nèi)建函數(shù)的比較高級(jí)的用法, 就是直接傳入序列,會(huì)返回序列中的最大/最小值。
函數(shù)原型:max(iterable, key, default)
這是求迭代器的最大值,其中iterable 為迭代器,max會(huì)for i in … 遍歷一遍這個(gè)迭代器,然后將迭代器的每一個(gè)返回值當(dāng)做參數(shù)傳給key=func 中的func(一般用lambda表達(dá)式定義) ,然后將func的執(zhí)行結(jié)果傳給key,然后以key為標(biāo)準(zhǔn)進(jìn)行大小的判斷。
注意,這里的重點(diǎn)是key,key 可以由一個(gè)lambda函數(shù)來(lái)表示,并通過(guò) key 的不同, 最終計(jì)算出來(lái)的值也會(huì)不同。
如果覺(jué)得以上描述還是比較難懂,那么可以這樣理解:key是一個(gè)關(guān)鍵字,它告訴 max 應(yīng)該通過(guò)什么因素去進(jìn)行計(jì)算。
OK,話不多說(shuō),直接來(lái)看示例
示例
這里通過(guò)幾個(gè)簡(jiǎn)單的示例代碼來(lái)進(jìn)行說(shuō)明:
v1 = {'name':'xiaoming','age':18} v2 = {'name':'zro','age':10} v3 = {'name':'april','age':30}b = [v1,v2,v3] print(max(b,key = lambda x:x['name']))print(max(b,key = lambda x:x['age']))輸出結(jié)果:
{'name': 'zro', 'age': 10} {'name': 'april', 'age': 30}解析:
第一句 print(max(b,key = lambda x:x[‘name’])),這里的 max 傳入的 key 是一個(gè)lambda語(yǔ)句,這句話的意思就是 要將字典中的‘name’作為對(duì)比的元素,然后會(huì)遍歷整個(gè)迭代器,并將 ‘name’元素取出來(lái)進(jìn)行對(duì)比,所以最終輸出結(jié)果為:
因?yàn)槿N字典中,’zro’才是最大的(通過(guò)對(duì)比字符串,從左至由對(duì)其 ASCII 碼進(jìn)行比較)。
而第二句print(max(b,key = lambda x:x[‘a(chǎn)ge’])),原理和上面一樣,這是去字典中的‘a(chǎn)ge’來(lái)進(jìn)行對(duì)比,所以最終輸出的結(jié)果就很明了了。
如果說(shuō)上面的示例還是難理解,那么再來(lái)看一個(gè)相對(duì)簡(jiǎn)單的示例:
a = [1,2,3,3,4,5,6,1,2,7,2,9,1,2] print(max(a,key = lambda x:a.count(x)))輸出結(jié)果為:2
解析:這里 a 是一個(gè)列表,max 函數(shù)指定的 key 是使用a 列表的 count()函數(shù),count()函數(shù)是用于統(tǒng)計(jì)列表中某個(gè)元素的個(gè)數(shù),那么這里的 max 計(jì)算出來(lái)的結(jié)果就是通過(guò)整理 a 列表中所有元素里面出現(xiàn)的個(gè)數(shù)最多的元素,所以輸出為2。
另外,上面的寫(xiě)法可以更簡(jiǎn)單一些:
其輸出結(jié)果是一樣的。
經(jīng)過(guò)上面的說(shuō)明,應(yīng)該理解起來(lái)就比較容易了。那么下面的語(yǔ)句就會(huì)很容易看懂了。
x=[23,14323,462,3323,761] #將元素轉(zhuǎn)換成字符串后進(jìn)行對(duì)比 print(max(x,key = str)) #返回轉(zhuǎn)換成字符串后最長(zhǎng)的值 print(max(x,key = lambda item:len(str(item))))def myFun(item):return str(item) #使用自定義函數(shù)指定排序規(guī)則 print(max(x,key = myFun))value = ((8,9,10),(8,10,9),(8,9,11)) print(max(value)) #只比較下標(biāo)為0和2的兩個(gè)元素 print(max(value,key = lambda item:(item[0],item[2])))輸出:
761 14323 761 (8, 10, 9) (8, 9, 11)參考文章:https://www.cnblogs.com/rendawei/p/7057010.html
https://blog.csdn.net/oh5W6HinUg43JvRhhB/article/details/78869541
總結(jié)
以上是生活随笔為你收集整理的Python 内建函数 max/min的高级用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 《高效能人士的七个习惯》
- 下一篇: Python基本数据类型 set()