Re: [教學] 排序問題
sort可以傳入自訂的比較函式進去
例如你是想要把 . 後面的數字當作整數來排序
可以這樣
def myCompare(a,b):
if( int(a.split('.')[1]) > int(b.split('.')[1]) ):
return 1
elif(int(a.split('.')[1]) < int(b.split('.')[1]) ):
return -1
else:
return 0
GG=['NM_M_3.3','NM_M_3.13','NM_M_3.11']
GG.sort(cmp=myCompare)
就會得到你要的結果了
※ 引述《g9678007 (HKE)》之銘言:
: 抱歉,剛剛有點太慌亂。
: 小弟是要排序 例如 GG=['NM_M_3.3','NM_M_3.13','NM_M_3.11']
: 我想要照數字大小排序
: 但是如果利用GG.sort() 會變
: ['NM_M_3.11', 'NM_M_3.13', 'NM_M_3.3']
: 他變成只排序小數點後面1然後由小到大
: 我想要的是
: [ 'NM_M_3.3','NM_M_3.11', 'NM_M_3.13']
: 問題是卡在字串裡面前後都夾很多字串,我有想過直接把字理的
: 3.3 3.11 3.13 取出來在轉float比大小就不會有這問題,但是每次的檔名
: 都不是很規則不能單純任位子
: 我在舉個例像
: GG=['NM_M_3.3','NM_M_3.13','NM_M_3.11','NM_M_3.9','NM_M_3.1']
: GG.sort()
: ['NM_M_3.1', 'NM_M_3.11', 'NM_M_3.13', 'NM_M_3.3', 'NM_M_3.9']
: 問題是我想要的是
: ['NM_M_3.1', 'NM_M_3.3', 'NM_M_3.9', 'NM_M_3.11', 'NM_M_3.13']
: 單純用python語法可以做到嘛?
: ※ 引述《sbrhsieh (偶爾想擺爛一下)》之銘言:
: : 說真的,看不懂你的推文是什麼意思?
: : 如果文章內容有打錯,不能花點時間修改一下你的文章內容嗎?
: : 別人問你 [ 'NM_M_3.3','NM_M_3.11', 'NM_M_3.13'] 是依什麼順序,你回答說依照
: : 數字大小排序,問題是這到底是什麼樣的大小的順序?
: : 我猜你要的是降冪:'NM_M_3.3','NM_M_3.13', 'NM_M_3.11'。
: : 可以在 sort 操作指定反序(for Python 2.4+):
: : GG.sort(reverse=True)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 140.112.213.158
推
11/16 22:16, , 1F
11/16 22:16, 1F
→
11/16 22:17, , 2F
11/16 22:17, 2F
→
11/16 22:17, , 3F
11/16 22:17, 3F
→
11/16 22:20, , 4F
11/16 22:20, 4F
→
11/16 22:21, , 5F
11/16 22:21, 5F
→
11/16 22:22, , 6F
11/16 22:22, 6F
推
11/16 22:38, , 7F
11/16 22:38, 7F
→
11/16 22:38, , 8F
11/16 22:38, 8F
討論串 (同標題文章)
Python 近期熱門文章
PTT數位生活區 即時熱門文章