Sort一下,Perl更轻松~
Posted 生信媛
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sort一下,Perl更轻松~相关的知识,希望对你有一定的参考价值。
某姑娘现在对perl算是小小的入门了,想当初未入门的时候,一个顺序问题,耗费了我不少脑细胞呀。。。
sort,排序命令相信大家都很熟悉,数组排序,可以这样:
反向排序,可以用reverse函数:
对于哈希,如果我想按键排序,最经典的做法就是:
好,热身完了,假设我像都哈希的键排序后,值也排序,怎么办?Perl里面有两个默认变量,$a和$b,专管排序一百年~但是大家在使用它们时要注意,不要自己把$a或$b赋值了哦!这两个变量,$a比较“小”,$b比较“大”。这里说的“大小”,是指按自然数顺序或按ASCII码(Perl 5)的顺序。
如果你要排序的是数字,你要使用”<=>”这个排序符,如果你要排列的是字母(Perl 5是按ASCII码的顺序,),则要使用“cmp”这个排序符,如:
咦?上面的$a和$b调换过来了?对呀,这样做相当于reverse~
借助子函数(sub)可以同时使用一个规则排列多个数列。
像对不同人的分数进行排序,分数是哈希的值时,我们可以使用这种方法~
对于有分数相同的情况,如果我们还希望再按他们姓名首字母排序时,可以这样做:
希望先排名字,就把“$a cmp $b”写在前面,就是说,写在前面的优先级比较高~
感觉用子程序可以搞定一切排序呢,但是子程序有时候会带来变量权限的麻烦!
其实,不用子程序也可以进行复杂的排序,有个万能的套路哟,请仔细观察上面的例子,实际上,sort只能对数列排序,当我们要对哈希排序时,实际上是把哈希的键和值看作一个数组。好了,下面我展示一个较复杂结构的数组的哈希的排序吧:
看,只要掌握了sort是对数组排序的,那么只要我们把想排序的内容,写成数组的形式,直接套用下面的式子就好啦,还不把这纷纷扰扰的顺序排整齐!
#上图中sub_sort_method就是我们制定的sort的策略啦~
其实与sort结合还有一些高级的玩法,有空再补充吧~
此文献给初学perl的童鞋们,本次故意没有把结果跑出来,感兴趣的同学把他们当是作业,自己玩玩看?
注:本文程序编辑参考了perl的大骆驼和小骆驼工具书~
以上是关于Sort一下,Perl更轻松~的主要内容,如果未能解决你的问题,请参考以下文章
让数据分析更简单的Panda技巧:万能转格式轻松合并数据压缩...
Pandas不容错过的Pandas小技巧:万能转格式轻松合并压缩数据,让数据分析更高效