#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. 當傳入參數為數據類型不一致時,傳入的所有參數將進行隱式數據類型轉換后再比較,如果不能進行隱式數據類型轉換,則會報錯。
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函數,變得可以比較能取最大值了。
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
