Sort一下,Perl更轻松~

Posted 生信媛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Sort一下,Perl更轻松~相关的知识,希望对你有一定的参考价值。

某姑娘现在对perl算是小小的入门了,想当初未入门的时候,一个顺序问题,耗费了我不少脑细胞呀。。。


sort,排序命令相信大家都很熟悉,数组排序,可以这样:

反向排序,可以用reverse函数:

Sort一下,Perl更轻松~

对于哈希,如果我想按键排序,最经典的做法就是:

Sort一下,Perl更轻松~


好,热身完了,假设我像都哈希的键排序后,值也排序,怎么办?Perl里面有两个默认变量,$a$b,专管排序一百年~但是大家在使用它们时要注意,不要自己把$a$b赋值了哦!这两个变量,$a比较“小”,$b比较“大”。这里说的“大小”,是指按自然数顺序或按ASCII码(Perl 5)的顺序。


如果你要排序的是数字,你要使用”<=>”这个排序符,如果你要排列的是字母(Perl 5是按ASCII码的顺序,),则要使用“cmp”这个排序符,如:

Sort一下,Perl更轻松~

Sort一下,Perl更轻松~

Sort一下,Perl更轻松~

咦?上面的$a$b调换过来了?对呀,这样做相当于reverse~


借助子函数(sub)可以同时使用一个规则排列多个数列。

Sort一下,Perl更轻松~


像对不同人的分数进行排序,分数是哈希的值时,我们可以使用这种方法~

Sort一下,Perl更轻松~


对于有分数相同的情况,如果我们还希望再按他们姓名首字母排序时,可以这样做:

Sort一下,Perl更轻松~



希望先排名字,就把“$a cmp $b”写在前面,就是说,写在前面的优先级比较高~

感觉用子程序可以搞定一切排序呢,但是子程序有时候会带来变量权限的麻烦!

 

其实,不用子程序也可以进行复杂的排序,有个万能的套路哟,请仔细观察上面的例子,实际上,sort只能对数列排序,当我们要对哈希排序时,实际上是把哈希的键和值看作一个数组。好了,下面我展示一个较复杂结构的数组的哈希的排序吧:

Sort一下,Perl更轻松~


看,只要掌握了sort是对数组排序的,那么只要我们把想排序的内容,写成数组的形式,直接套用下面的式子就好啦,还不把这纷纷扰扰的顺序排整齐!

#上图中sub_sort_method就是我们制定的sort的策略啦~


其实与sort结合还有一些高级的玩法,有空再补充吧~

此文献给初学perl的童鞋们,本次故意没有把结果跑出来,感兴趣的同学把他们当是作业,自己玩玩看?


注:本文程序编辑参考了perl的大骆驼和小骆驼工具书~


以上是关于Sort一下,Perl更轻松~的主要内容,如果未能解决你的问题,请参考以下文章

让数据分析更简单的Panda技巧:万能转格式轻松合并数据压缩...

轻松学习学 Pandas:17个函数操作可以这样学起来

为什么有些人赚钱那么轻松

Pandas不容错过的Pandas小技巧:万能转格式轻松合并压缩数据,让数据分析更高效

web自动化测试requests-html 这个解析库,能让你更轻松的获取网页内容

使用vi编辑器轻松(取消)注释源代码