【轉】Python max內置函數詳細介紹
阿新 • • 發佈:2017-10-23
使用 pri 數據 否則 索引 def 取數 而且 ace
#max() array1 = range(10) array2 = range(0, 20, 3) print(‘max(array1)=‘, max(array1)) print(‘max(array2)=‘, max(array2)) print(‘max(array1,)=‘, max(array1, key=lambda x: x > 3) ) print(max(1, 2)) print(max(‘ah‘, ‘bf‘, key=lambda x: x[1])) print(max(array1, array2, key=lambda x: x[1])) def comparator(x): return x[2] print(max(‘ah2‘, ‘bf3‘, key=comparator)) 結果輸出如下: max(array1)= 9 max(array2)= 18 max(array1,)= 4 2 ah range(0, 20, 3) bf3
說明:
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()
原文地址:http://www.jb51.net/article/97571.htm
【轉】Python max內置函數詳細介紹