看板 Python 關於我們 聯絡資訊
抱歉,剛剛有點太慌亂。 小弟是要排序 例如 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 (偶爾想擺爛一下)》之銘言: : ※ 引述《g9678007 (HKE)》之銘言: : : 標題: [教學] 排序問題 : : 時間: Mon Nov 16 19:10:13 2009 : : hello 各位板上的大大好 小弟又來請教各位大大了 : : 問題是 GG=['NM_M_3.3','NM_M_3.13','NM_M_3.11'] : : 排序 我用SORT 都會變這樣 : : ['NM_M_3.11', 'NM_M_3.13', 'NM_M_3.3'] : : 這不是我要的我要是 : : [ 'NM_M_3.3','NM_M_3.11', 'NM_M_3.13'] : : 因為這是字串沒辦法轉浮點數 : : 或用拆字串取數的手法因為前後面都還有一些字串沒有規折可以 : : 分解 拜託各位大大了 : : -- : : → g9678007:報歉第一個GG順序打錯 反正一開始就是亂數排位 11/16 19:12 : : → AndCycle:請自行定義如何排序 11/16 19:12 : : → sbrhsieh:是依什麼規則? 11/16 19:53 : : → g9678007:把它想成數字大小排序是卡在他混在字串裡面 11/16 20:02 : 說真的,看不懂你的推文是什麼意思? : 如果文章內容有打錯,不能花點時間修改一下你的文章內容嗎? : 別人問你 [ '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: 123.195.28.55
timerover:為什麼第一個例子 3.3 > 3.11 呀? 11/16 21:44
mantour:因為字串的大小是一個字元一個字元比吧 11/16 21:46
timerover:應該說..原PO的問題是希望照float的方式比吧?? 11/16 21:47
mantour:就跟有些檔名排序 pic10.jpg 會排在 pic2.jpg的前面一樣 11/16 21:48
mantour:所以就是要問怎樣可以做到呀… 11/16 21:49
mantour:除了自己寫一個sort函式,目前還沒想到好方法 11/16 21:49
mantour:或是自己寫一個class, override __gt__() 函式 11/16 21:55
mantour:喔喔 看了help , 發現sort可以傳入自訂的cmp函式 11/16 21:56
zerodevil:就這個例子來說給key會比較簡單xd 11/16 22:09