日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

Python 内建函数 max/min的高级用法

發(fā)布時(shí)間:2025/1/21 python 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python 内建函数 max/min的高级用法 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

max/min 函數(shù)

Python 中的 max/min函數(shù)是用來獲取傳入?yún)?shù)的最大值或最小值的,其運(yùn)行機(jī)制都一樣,所以這里主要描述 max 的運(yùn)行機(jī)制以及使用方法。

最簡(jiǎn)單的用法,就是直接傳入兩個(gè)要對(duì)比的元素,可以返回其兩個(gè)元素中的最大值。因?yàn)槭褂煤芎?jiǎn)單,這里不做過多介紹。

那么重點(diǎn)說一下這兩個(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ù)來表示,并通過 key 的不同, 最終計(jì)算出來的值也會(huì)不同。
如果覺得以上描述還是比較難懂,那么可以這樣理解:key是一個(gè)關(guān)鍵字,它告訴 max 應(yīng)該通過什么因素去進(jìn)行計(jì)算。

OK,話不多說,直接來看示例

示例

這里通過幾個(gè)簡(jiǎn)單的示例代碼來進(jìn)行說明:

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語句,這句話的意思就是 要將字典中的‘name’作為對(duì)比的元素,然后會(huì)遍歷整個(gè)迭代器,并將 ‘name’元素取出來進(jìn)行對(duì)比,所以最終輸出結(jié)果為:

{'name': 'zro', 'age': 10}

因?yàn)槿N字典中,’zro’才是最大的(通過對(duì)比字符串,從左至由對(duì)其 ASCII 碼進(jìn)行比較)。
而第二句print(max(b,key = lambda x:x[‘a(chǎn)ge’])),原理和上面一樣,這是去字典中的‘a(chǎn)ge’來進(jìn)行對(duì)比,所以最終輸出的結(jié)果就很明了了。


如果說上面的示例還是難理解,那么再來看一個(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ì)算出來的結(jié)果就是通過整理 a 列表中所有元素里面出現(xiàn)的個(gè)數(shù)最多的元素,所以輸出為2。
另外,上面的寫法可以更簡(jiǎn)單一些:

print(max(a,key = a.count))

其輸出結(jié)果是一樣的。

經(jīng)過上面的說明,應(yīng)該理解起來就比較容易了。那么下面的語句就會(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ǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。