作者g9678007 (HKE)
看板Python
标题Re: [教学] 排序问题
时间Mon Nov 16 21:27:26 2009
抱歉,刚刚有点太慌乱。
小弟是要排序 例如 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
1F:推 timerover:为什麽第一个例子 3.3 > 3.11 呀? 11/16 21:44
2F:推 mantour:因为字串的大小是一个字元一个字元比吧 11/16 21:46
3F:推 timerover:应该说..原PO的问题是希望照float的方式比吧?? 11/16 21:47
4F:→ mantour:就跟有些档名排序 pic10.jpg 会排在 pic2.jpg的前面一样 11/16 21:48
5F:→ mantour:所以就是要问怎样可以做到呀… 11/16 21:49
6F:→ mantour:除了自己写一个sort函式,目前还没想到好方法 11/16 21:49
7F:推 mantour:或是自己写一个class, override __gt__() 函式 11/16 21:55
8F:→ mantour:喔喔 看了help , 发现sort可以传入自订的cmp函式 11/16 21:56
9F:推 zerodevil:就这个例子来说给key会比较简单xd 11/16 22:09