Python中min()函數的作用是求一組數據中的最小者,如一組數字的最小值。
Python中min()函數的語法格式與max()函數語法格式相同。一般語法格式如下:
min( iterable, *[,key, default])
參數的含義如下:
如果直接將多個數值直接作為參數,其語法格式如下:
min(arg1, arg2, *args[,key])
在了解了min()函數的基本語法格式后,下面舉例來說明該函數的具體使用方法。
下面這段程序演示了列表、元組作為參數傳遞給min函數的情形。
#求列表中的最小值
list1 = [13,46,67,3,90,52]
min1 = min(list1)
print("最小值是:", min1)
list2 = []
min2 = min(list2, default = None)
print("最小值是:", min2)
#求元組中的最小值
t = (12,54,32,98,33)
min3 = min(t)
print("最小值是:", min3)
輸出結果:
最小值是: 3
最小值是: None
最小值是: 12
上面給出了三個例子用于求給定迭代對象中的最小值,其中求min1是一般的調用情況,這時要求迭代對象list1不能為空。求min2時給出了default參數,即迭代對象為空時,給出的最小值為None,如未設置default參數,迭代對象為空時將會給出以下錯誤:
ValueError: min() arg is an empty sequence
min3是迭代對象為元組時的情形。
我們在使用min()函數時也可以直接給出不少于2個值的參數,直接求出其最小者:
#傳遞多個值作為參數
min4 = min(12, 9, 87, 23, 65)
print("最小值是:", min4)
其輸出結果如下:
最小值是: 9
在使用這種形式時要確保給出的參數值不少于兩個值,否則會給出如下錯誤:
TypeError: 'int' object is not iterable
即參數類型錯誤,在給定一個參數時,Python解釋器將會把該種調用理解為第一種形式:即傳遞可迭代對象,否則就會出錯。
有時傳遞的可迭代對象的元素值仍為一個集合序列值時,Python解釋器無法按照常規方法求最小值,這時需要我們指定排序的算法。
list3 = [[32,10,68],[45,8,99],[36,29,79]]
def func(alist):
return alist[1]
min5 = min(list3, key = func)
print("列表中的最小值為:", min5)
min6 = min(list3)
print("列表中的最小值為:", min6)
其輸出結果如下:
列表中的最小值為: [45, 8, 99]
列表中的最小值為: [32, 10, 68]
上面兩個例子中,求min5時指定了key參數,key參數所指定的函數是要求按照列表中第2個元素值的大小進行排序。由于三個子列表中第2個元素的最小值是第2個子列表,所以輸出結果為:[45, 8, 99]。
實際上,在這種情況下,即使沒有給定key參數,默認是按照子列表中的第1個進行排序,min6演示了這種情況。
當指定key參數時,迭代對象中的每個元素也應該是可迭代對象。
min函數不僅可以用于數值型的可迭代對象,也可以運用于其它類型的可迭代對象,如列表、元組、字符串。在上面的例子中已經證明了可迭代對象的元素為列表的情形,默認是比較的每個子列表中第一個元素值的大小。元組也是如此。
對于字符串是比較第一個字符的Unicode值。下面給出一個字符串的例子。
minstr1= min("I Love China!")
print("最小字符:", minstr1)
minstr2 = min("我愛中國")
#使用ord找出每個字符的Unicode碼
print("我:",ord("我"))
print("愛:",ord("愛"))
print("中:",ord("中"))
print("國:",ord("國"))
print("最小字符:", minstr2)
輸出結果如下:
最小字符: ' '
上面第1個例子中,空格是最小字符。
我: 25105
愛: 29233
中: 20013
國: 22269
最小字符: 中
本文(完)
新聞熱點
疑難解答