聊聊Python String型列表求最值的問題

2022-10-04 11:33:11 字數 1001 閱讀 9464

最近在寫乙個程式設計客棧專案的時候發現了個很神奇的問題

temp_list=['9','10','10','9','10']

print(max(temp_list)) # 9

print(min(temp_list)) # 10

最大值變成了9,而最小值變成了10。導致我在乙個ex程式設計客棧cel表中的資料老是判斷錯誤

分析之後原因如下:

如果比較字串的大小,則比較的是字元的ascii編碼的大小。

在比較時,設定乙個計數器,從零開始,一直迴圈到最短的那個字元結束,一位一位進行比較,

1.如果 字串1的第n位的ascii碼值 等於 字串2的第n位的ascii碼值

則 繼續比較下一位

2.如果 字串1的第n位的ascii碼值 大於 字串2的第n位的ascii碼值

則 輸出結果:1,表示字串1 &程式設計客棧gt; 字串2;

3.如果 字串1的第n位的ascii碼值 小於 字串2的第n位的ascii碼值

則 輸出結果:-1 表示字串1 < 字串2;

4.如果 每一位的ascii碼值都相等,而且長度相同,

則 輸出結果:0 表示字串1 == 字串2;

5.如果 字串1是字串2的前m位,例如 abcd 與abcdef 比較,

則 字串1字串2.

原因是,到第5位時,字串1的ascii值是0,而字串2的ascii值為'e',即十進位制的101mwsonyllr,當然是字串2大了.

這邊的話,相當於是9跟1作比較,固然最後得出來的字串『9』大於『10』

比較好的辦法就是寫個函式,把字串轉換成int型

def stringtoint(temp_list):

tt_list=

for i in temp_list:

tt_list.append(float(i))

return tt_list

字串的問題雖然簡單,但是很容易出錯,另外,python中做判斷的時候一定要注意資料型別

python String操作總結

def split self,sep none maxsplit none 按照指定字元切割字串,返回乙個列表,可以指定切割次數 defstrip self,chars none 去空格,去掉字串兩邊的空格 defupper self 轉換為大寫 deflower self 轉換為小寫 defrep...

Python String型別詳解

在python中,string是代表unicode字元的位元組陣列。但是在python中沒有單個的字元資料型別,a 這種只是長度為1的string 1.建立string 在python中建立字串可以用單引號,雙引號甚至是三引號。a ada b dsfsg c dasfdf a ada b dsfsg...

Python string常用函式

2017 07 03 23 26 08 1 replace self,old,new,count 1 replace 函式將舊字串替換為新字串,最後乙個引數count為可選項,表示替換最多count次 小於count 注意這種替換返回替換後的字串,源字串是不改變的。s abcdef out s.re...