假如給你一個純數字的列表,讓你求出它的最大值和最小值,你會怎么辦呢?
在這里我想到了兩種方法:
第一種就是將這個列表進行重新排列,讓它升序排列,那么升序排列之后第一個元素就是最小值最后一個就是最大值
lst = [1,3,5,2,8,6] lst.sort() print("最小值為: %d" % lst[0]) print("最大值為: %d" % lst[-1]) >>>最小值為: 1 >>>最大值為: 8
這個方法比較簡單,只是用的列表的重新排序就可以達到目的
第二種就要用到python的兩個內置函數max()和min(),從字面意思就可以看得出來max()是求最大值的,min()是求最小值的
lst = [1,3,5,2,8,6] print("最小值為: %d" % min(lst)) print("最大值為: %d" % max(lst)) >>>最小值為: 1 >>>最大值為: 8
這種方法就更簡單了,直接使用這兩個內置函數就可以了
接下來我要說的就是min()函數和max()函數的內在原理,或者說是通過算法來實現求最大值和最小值
大家先看代碼
1 lst = [1,3,5,2,8,6] 2 ma = lst[0] # 假設第0項就是最大值 3 mi = lst[0] 4 for el in lst: 5 if el > ma: 6 ma = el 7 if el < mi: 8 mi = el 9 print("最小值為: %d" % mi) 10 print("最大值為: %d" % ma)
在第二行我們假設列表的第0項就是它的最大值,然后遍歷這個列表,如果遍歷的值比我們假設的最大值還要的大話,我們就把這個值賦值給我們之前認為是最大值的變量
然后同理假設第0項就是最小值,再做同樣的賦值操作
這樣循環下去,我們當初假設的最小值就真的成了最小值,假設的最大值也真的成了最大值
在這里最重要的就是這個假設思想. 假設第0項是最大值或者是最小值,這樣循環時來比較大小,比它大就將那個值賦值給它
