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