聊聊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,當然是字符串2大了.
這邊的話,相當于是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 的 f-string 可以連接字符串與數(shù)字的原因解析
這篇文章主要介紹了Python 的 f-string 可以連接字符串與數(shù)字的原因解析,本文給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-02-02
Pytorch中torch.utils.checkpoint()及用法詳解
在PyTorch中,torch.utils.checkpoint?模塊提供了實現(xiàn)梯度檢查點(也稱為checkpointing)的功能,這篇文章給大家介紹了Pytorch中torch.utils.checkpoint()的相關(guān)知識,感興趣的朋友一起看看吧2024-03-03

