溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

怎么用Python按特定條件查找列表的最小或最大值

發(fā)布時間:2022-10-09 09:58:18 來源:億速云 閱讀:146 作者:iii 欄目:web開發(fā)

這篇“怎么用Python按特定條件查找列表的最小或最大值”文章的知識點(diǎn)大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“怎么用Python按特定條件查找列表的最小或最大值”文章吧。

1. 引言

Python中的minmax函數(shù)允許我們找到列表(或類似可迭代數(shù)據(jù)結(jié)構(gòu))的最小值/最大值,但是我們可以對其擴(kuò)展,即根據(jù)特定應(yīng)用條件來進(jìn)行相應(yīng)的查找。 

2. 基礎(chǔ)用法

我們知道,函數(shù)MinMax的功能和其名字意義一樣,用來返回列表中的最小和最大值,我們來看個簡單的例子。 這里假設(shè)我們有以下列表:

list1 = [3,6,5,2,9,7]

此時我們可以使用min(list1)函數(shù)來獲得列表list1里最小的元素,同時我們也可以使用max(list1)函數(shù)來獲得列表list1里最大的元素。

minimum = min(lis) # 2
maximum = max(lis) # 9

3. 加入特定條件

但是,如果我們想使用某個條件找到列表的最小/最大值,該怎么辦?我們可以使用參數(shù)key來實(shí)現(xiàn)。我們觀察如下列表:

lis = ["apple", "orange", "pear", "pineapple", "banana"]

這里上述列表為字符串列表,如果我們希望查找包含字符數(shù)目最少/多的元素。我們可以這樣定義查找條件函數(shù):

def condition(string):
    return len(string)

上述條件函數(shù)接受列表中的元素,并返回我們希望設(shè)定的條件來查找最小或最大值,我們將上述條件作為參數(shù)傳遞給函數(shù)minmax,如下:

minimum = min(lis, key=condition)  # pear
maximum = max(lis, key=condition)  # pineapple

這里值得一提的是,關(guān)鍵字key需要傳入函數(shù)。

4. 使用lambda表達(dá)式

更進(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

5. 舉一反三

假設(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è)資訊頻道。

向AI問一下細(xì)節(jié)

免責(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)容。

AI