python 之金玉良言 或許是最後一次給自己系統總結
阿新 • • 發佈:2019-02-25
trace 必須 註意 結果 需要 完全 可變對象 turn 哈希算法
set和dict的唯一區別僅在於沒有存儲對應的value,但是,set的原理和dict一樣,所以,同樣不可以放入可變對象,因為無法判斷兩個可變對象是否相等,也就無法保證set內部“不會有重復元素”。 請務必註意,dict內部存放的順序和key放入的順序是沒有關系的。 和list比較,dict有以下幾個特點: 查找和插入的速度極快,不會隨著key的增加而變慢; 需要占用大量的內存,內存浪費多。 而list相反: 查找和插入的時間隨著元素的增加而增加; 占用空間小,浪費內存很少。 所以,dict是用空間來換取時間的一種方法。 dict可以用在需要高速查找的很多地方,在Python代碼中幾乎無處不在,正確使用dict非常重要,需要牢記的第一條就是dict的key必須是不可變對象。 這是因為dict根據key來計算value的存儲位置,如果每次計算相同的key得出的結果不同,那dict內部就完全混亂了。這個通過key計算位置的算法稱為哈希算法(Hash)。 要保證hash的正確性,作為key的對象就不能變。在Python中,字符串、整數等都是不可變的,因此,可以放心地作為key。而list是可變的,就不能作為key: >>> key = [1, 2, 3] >>> d[key] = 'a list' Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: unhashable type: 'list' l = [4,5,6] t = (1,) s = {1} # s = set([1,2,3]) d = {'name':'frank'} help(abs)
""" 練習 小明身高1.75,體重80.5kg。請根據BMI公式(體重除以身高的平方)幫小明計算他的BMI指數,並根據BMI指數: 低於18.5:過輕 18.5-25:正常 25-28:過重 28-32:肥胖 高於32:嚴重肥胖 """ height = 1.75 weight = 80.5 def BMI(height,weight): bmi = (weight/height)**2 results = ("過輕","正常","過重","肥胖","嚴重肥胖") ret = results[-1] if bmi<18.5: ret = results[0] elif 18.5<=bmi<25: ret = results[1] elif 25<=bmi<28: ret = results[2] elif 28<=bmi<32: ret = results[3] else: pass return ret BMI(height,weight)
我見青山多巍峨,料青山見我應如是
python 之金玉良言 或許是最後一次給自己系統總結