您好,登錄后才能下訂單哦!
這篇“怎么用Python按特定條件查找列表的最小或最大值”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么用Python按特定條件查找列表的最小或最大值”文章吧。
Python中的min
和max
函數(shù)允許我們找到列表(或類似可迭代數(shù)據(jù)結(jié)構(gòu))的最小值/最大值,但是我們可以對其擴(kuò)展,即根據(jù)特定應(yīng)用條件來進(jìn)行相應(yīng)的查找。
我們知道,函數(shù)Min
和Max
的功能和其名字意義一樣,用來返回列表中的最小和最大值,我們來看個簡單的例子。
這里假設(shè)我們有以下列表:
list1 = [3,6,5,2,9,7]
此時我們可以使用min(list1)
函數(shù)來獲得列表list1
里最小的元素,同時我們也可以使用max(list1)
函數(shù)來獲得列表list1
里最大的元素。
minimum = min(lis) # 2 maximum = max(lis) # 9
但是,如果我們想使用某個條件找到列表的最小/最大值,該怎么辦?我們可以使用參數(shù)key
來實(shí)現(xiàn)。我們觀察如下列表:
lis = ["apple", "orange", "pear", "pineapple", "banana"]
這里上述列表為字符串列表,如果我們希望查找包含字符數(shù)目最少/多的元素。我們可以這樣定義查找條件函數(shù):
def condition(string): return len(string)
上述條件函數(shù)接受列表中的元素,并返回我們希望設(shè)定的條件來查找最小或最大值,我們將上述條件作為參數(shù)傳遞給函數(shù)min
和max
,如下:
minimum = min(lis, key=condition) # pear maximum = max(lis, key=condition) # pineapple
這里值得一提的是,關(guān)鍵字key
需要傳入函數(shù)。
更進(jìn)一步,我們可以將上述條件函數(shù)改寫成lambda表達(dá)式,這樣就可以使用簡潔的代碼來實(shí)現(xiàn)功能強(qiáng)大的作用。如下:
def condition1(string): return len(string) condition1 = lambda string: len(string)
可以看出,二者功能一摸一樣,但lambda表達(dá)式的寫法更加簡潔。 此時根據(jù)字符串長度求列表最小最大元素可以改寫成如下形式:
minimum = min(lis, key=lambda s:len(s)) # pear maximum = max(lis, key=lambda s:len(s)) # pineapple
假設(shè)我們希望通過統(tǒng)計字母a
的數(shù)量來查找字符串列表的最小/最大元素,我們可以這樣實(shí)現(xiàn):
lis = ["apple", "orange", "pear", "pineapple", "banana"] min(lis, key=lambda s:s.count("a")) # apple max(lis, key=lambda s:s.count("a")) # banana
更近一步,通過元音的數(shù)量(a、e、i、o、u)
來確定字符串列表的最小/最大元素,實(shí)現(xiàn)如下:
lis = ["apple", "orange", "pear", "pineapple", "banana"] min(lis, key=lambda s:sum([c in "aeiou" for c in s])) # apple max(lis, key=lambda s:sum([c in "aeiou" for c in s])) # pineapple
根據(jù)整數(shù)列表的最后一個數(shù)字求其最小值/最大值:
lis = [4,5,19,101,302] min(lis, key=lambda n:str(n)[-1]) # 101 max(lis, key=lambda n:str(n)[-1]) # 19
以上就是關(guān)于“怎么用Python按特定條件查找列表的最小或最大值”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。