聊聊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ù)老是判斷錯誤
分析之后原因如下:
如果比較字符串的大小,則比較的是字符的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
字符串的問題雖然簡單,但是很容易出錯,另外,Python中做判斷的時(shí)候一定要注意數(shù)據(jù)類型
到此這篇關(guān)于Python String型列表求最值的問題的文章就介紹到這了,更多相關(guān)Python String型列表內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python讀取目錄下所有的jpg文件,并顯示第一張圖片的示例
今天小編就為大家分享一篇python讀取目錄下所有的jpg文件,并顯示第一張圖片的示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06python實(shí)現(xiàn)爬取千萬淘寶商品的方法
這篇文章主要介紹了python實(shí)現(xiàn)爬取千萬淘寶商品的方法,涉及Python頁面抓取的相關(guān)技巧,需要的朋友可以參考下2015-06-06python中while循環(huán)語句用法簡單實(shí)例
這篇文章主要介紹了python中while循環(huán)語句用法,以一個(gè)簡單實(shí)例形式分析了Python使用while循環(huán)語句使用方法,需要的朋友可以參考下2015-05-05利用Python代碼實(shí)現(xiàn)模擬動態(tài)指針時(shí)鐘
這篇文章主要為大家詳細(xì)介紹了如何利用python和C++代碼實(shí)現(xiàn)模擬動態(tài)指針時(shí)鐘,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起了解一下2023-04-04Python使用for實(shí)現(xiàn)無限循環(huán)的多種方式匯總
這篇文章主要介紹了Python使用for實(shí)現(xiàn)無限循環(huán)的多種方式匯總,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03python判斷一個(gè)集合是否為另一個(gè)集合的子集方法
下面小編就為大家分享一篇python判斷一個(gè)集合是否為另一個(gè)集合的子集方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05