聊聊Python String型列表求最值的問題
最近在寫一個(gè)項(xiàng)目的時(shí)候發(fā)現(xiàn)了個(gè)很神奇的問題
temp_list=['9','10','10','9','10'] print(max(temp_list)) # 9 print(min(temp_list)) # 10
最大值變成了9,而最小值變成了10。導(dǎo)致我在一個(gè)Excel表中的數(shù)據(jù)老是判斷錯(cuò)誤
分析之后原因如下:
如果比較字符串的大小,則比較的是字符的ASCII編碼的大小。
在比較時(shí),設(shè)置一個(gè)計(jì)數(shù)器,從零開始,一直循環(huán)到最短的那個(gè)字符結(jié)束,一位一位進(jìn)行比較,
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位時(shí),字符串1的ASCII值是0,而字符串2的ASCII值為'e',即十進(jìn)制的101,當(dāng)然是字符串2大了.
這邊的話,相當(dāng)于是9跟1作比較,固然最后得出來的字符串‘9’大于‘10’
比較好的辦法就是寫個(gè)函數(shù),把字符串轉(zhuǎn)換成int型
def stringToInt(temp_list):
tt_list=[]
for i in temp_list:
tt_list.append(float(i))
return tt_list字符串的問題雖然簡(jiǎn)單,但是很容易出錯(cuò),另外,Python中做判斷的時(shí)候一定要注意數(shù)據(jù)類型
到此這篇關(guān)于Python String型列表求最值的問題的文章就介紹到這了,更多相關(guān)Python String型列表內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Python 的 f-string 可以連接字符串與數(shù)字的原因解析
這篇文章主要介紹了Python 的 f-string 可以連接字符串與數(shù)字的原因解析,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-02-02
python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲
這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)簡(jiǎn)單五子棋游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-06-06
Pytorch中torch.utils.checkpoint()及用法詳解
在PyTorch中,torch.utils.checkpoint?模塊提供了實(shí)現(xiàn)梯度檢查點(diǎn)(也稱為checkpointing)的功能,這篇文章給大家介紹了Pytorch中torch.utils.checkpoint()的相關(guān)知識(shí),感興趣的朋友一起看看吧2024-03-03
Django 實(shí)現(xiàn)前端圖片壓縮功能的方法
今天小編就為大家分享一篇Django 實(shí)現(xiàn)前端圖片壓縮功能的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-08-08

