Python內建函數(41)——max,python內建41max

來源:互聯網
上載者:User

Python內建函數(41)——max,python內建41max

英文文檔:

max(iterable, *[, key, default])

max(arg1, arg2, *args[, key])

Return the largest item in an iterable or the largest of two or more arguments.

If one positional argument is provided, it should be an iterable. The largest item in the iterable is returned. If two or more positional arguments are provided, the largest of the positional arguments is returned.

There are two optional keyword-only arguments. The key argument specifies a one-argument ordering function like that used for list.sort(). The default argument specifies an object to return if the provided iterable is empty. If the iterable is empty and default is not provided, a ValueError is raised.

If multiple items are maximal, the function returns the first one encountered. This is consistent with other sort-stability preserving tools such as sorted(iterable, key=keyfunc, reverse=True)[0] and heapq.nlargest(1, iterable, key=keyfunc).

 

說明:

  1. 函數功能為取傳入的多個參數中的最大值,或者傳入的可迭代對象元素中的最大值。預設數值型參數,取值大者;字元型參數,取字母表排序靠後者。還可以傳入具名引數key,其為一個函數,用來指定取最大值的方法。default具名引數用來指定最大值不存在時返回的預設值。

  2. 函數至少傳入兩個參數,但是有只傳入一個參數的例外,此時參數必須為可迭代對象,返回的是可迭代對象中的最大元素。

>>> max(1) # 傳入1個參數報錯Traceback (most recent call last):  File "<pyshell#0>", line 1, in <module>    max(1)TypeError: 'int' object is not iterable>>> max(1,2) # 傳入2個參數 取2個中較大者2>>> max(1,2,3) # 傳入3個參數 取3個中較大者3>>> max('1234') # 傳入1個可迭代對象,取其最大元素值'4'

  3. 當傳入參數為資料類型不一致時,傳入的所有參數將進行隱式資料類型轉換後再比較,如果不能進行隱式資料類型轉換,則會報錯。

>>> max(1,1.1,1.3E1) # 整數與浮點數可取最大值13.0>>> max(1,2,3,'3') # 數值與字串不能取最大值Traceback (most recent call last):  File "<pyshell#5>", line 1, in <module>    max(1,2,3,'3')TypeError: unorderable types: str() > int()>>> max([1,2],[1,3]) # 列表與列表可取最大值[1, 3]>>> max([1,2],(1,3)) # 列表與元組不能取最大值Traceback (most recent call last):  File "<pyshell#7>", line 1, in <module>    max([1,2],(1,3))TypeError: unorderable types: tuple() > list()

  4. 當存在多個相同的最大值時,返回的是最先出現的那個最大值。

#定義a、b、c 3個列表>>> a = [1,2]>>> b = [1,1]>>> c = [1,2]#查看a、b、c 的id>>> id(a)68128320>>> id(b)68128680>>> id(c)68128240#取最大值>>> d = max(a,b,c)>>> id(d)68128320#驗證是否最大值是否是a>>> id(a) == id(d)True

  5. 預設數值型參數,取值大者;字元型參數,取字母表排序靠後者;序列型參數,則依次按索引位置的值進行比較取最大者。還可以通過傳入具名引數key,指定取最大值方法。

>>> max(1,2) # 取數值大者2>>> max('a','b') # 取排序靠後者'b'>>> max('ab','ac','ad') # 依次按索引比較取較大者'ad'>>> max(-1,0) # 數值預設去數值較大者0>>> max(-1,0,key = abs) # 傳入了求絕對值函數,則參數都會進行求絕對值後再取較大者-1

  6. key參數的另外一個作用是,不同類型對象本來不能比較取最大值的,傳入適當的key函數,變得可以比較能取最大值了。

>>> max(1,2,'3') #數值和字串不能取最大值Traceback (most recent call last):  File "<pyshell#21>", line 1, in <module>    max(1,2,'3')TypeError: unorderable types: str() > int() >>> max(1,2,'3',key = int) # 指定key為轉換函式後,可以取最大值'3'>>> max((1,2),[1,1]) #元組和列表不能取最大值Traceback (most recent call last):  File "<pyshell#24>", line 1, in <module>    max((1,2),[1,1])TypeError: unorderable types: list() > tuple()>>> max((1,2),[1,1],key = lambda x : x[1]) #指定key為返回序列索引1位置的元素後,可以取最大值(1, 2)

  7. 當只傳入的一個可迭代對象時,而且可迭代對象為空白,則必須指定具名引數default,用來指定最大值不存在時,函數返回的預設值。

>>> max(()) #空可迭代對象不能取最大值Traceback (most recent call last):  File "<pyshell#26>", line 1, in <module>    max(())ValueError: max() arg is an empty sequence>>> max((),default=0) #空可迭代對象,指定default參數為預設值0>>> max((),0) #預設值必須使用具名引數進行傳參,否則將被認為是一個比較的元素Traceback (most recent call last):  File "<pyshell#27>", line 1, in <module>    max((),0)TypeError: unorderable types: int() > tuple()

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.