聊聊Python String型列表求最值的問題
最近在寫一個項目的時候發(fā)現(xiàn)了個很神奇的問題
temp_list=['9','10','10','9','10'] print(max(temp_list)) # 9 print(min(temp_list)) # 10
最大值變成了9,而最小值變成了10。導(dǎo)致我在一個Excel表中的數(shù)據(jù)老是判斷錯誤
分析之后原因如下:
如果比較字符串的大小,則比較的是字符的ASCII編碼的大小。
在比較時,設(shè)置一個計數(shù)器,從零開始,一直循環(huán)到最短的那個字符結(jié)束,一位一位進行比較,
1.如果 字符串1的第n位的ASCII碼值 等于 字符串2的第n位的ASCII碼值
則 繼續(xù)比較下一位
2.如果 字符串1的第n位的ASCII碼值 大于 字符串2的第n位的ASCII碼值
則 輸出結(jié)果:1,表示字符串1 > 字符串2;
3.如果 字符串1的第n位的ASCII碼值 小于 字符串2的第n位的ASCII碼值
則 輸出結(jié)果:-1 表示字符串1 < 字符串2;
4.如果 每一位的ASCII碼值都相等,而且長度相同,
則 輸出結(jié)果:0 表示字符串1 == 字符串2;
5.如果 字符串1是字符串2的前m位,例如 abcd 與abcdef 比較,
則 字符串1<字符串2.
原因是,到第5位時,字符串1的ASCII值是0,而字符串2的ASCII值為'e',即十進制的101,當(dāng)然是字符串2大了.
這邊的話,相當(dāng)于是9跟1作比較,固然最后得出來的字符串‘9’大于‘10’
比較好的辦法就是寫個函數(shù),把字符串轉(zhuǎn)換成int型
def stringToInt(temp_list): tt_list=[] for i in temp_list: tt_list.append(float(i)) return tt_list
字符串的問題雖然簡單,但是很容易出錯,另外,Python中做判斷的時候一定要注意數(shù)據(jù)類型
到此這篇關(guān)于Python String型列表求最值的問題的文章就介紹到這了,更多相關(guān)Python String型列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python讀取目錄下所有的jpg文件,并顯示第一張圖片的示例
今天小編就為大家分享一篇python讀取目錄下所有的jpg文件,并顯示第一張圖片的示例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06利用Python代碼實現(xiàn)模擬動態(tài)指針時鐘
這篇文章主要為大家詳細(xì)介紹了如何利用python和C++代碼實現(xiàn)模擬動態(tài)指針時鐘,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04Python使用for實現(xiàn)無限循環(huán)的多種方式匯總
這篇文章主要介紹了Python使用for實現(xiàn)無限循環(huán)的多種方式匯總,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03