看板 Python 關於我們 聯絡資訊
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
timerover:交給mantour大大講解了! 經過解說才聽懂原PO說什麼XD 11/16 22:16
mantour:樓上的方法 剛剛還沒看仔細就被刪了XD 沒學到>< 11/16 22:17
mantour:可以再po一下嗎 ~~ 11/16 22:17
sbrhsieh:排序的方式與檔名的規則沒確定前,不可能給得出正確作法 11/16 22:20
mantour:嗯 對呀 要知道輸入的規則和確切想要排的方式 11/16 22:21
mantour:反正給個例子 有其他需求就請原PO自己改囉 11/16 22:22
g9678007:我是自己用硬幹的方法自己寫一個sort猜 11/16 22:38
g9678007:原來這可以這樣用,感謝大大指導了!! 11/16 22:38