Perl中的数组排序
发布时间:2020-12-15 23:34:08 所属栏目:大数据 来源:网络整理
导读:我是Perl的新手并且遇到了一个(很简单的)数组排序问题. 我继承了一些Perl代码,它将文本文件中的行读入三个1-D数组(x,y,z).我希望能够使用其中一个维度作为关键字对这些数组进行排序,并重新排序其他两个维度以匹配. 例如,如果我的输入是: @x =(1,3,2) @y =(1
我是Perl的新手并且遇到了一个(很简单的)数组排序问题.
我继承了一些Perl代码,它将文本文件中的行读入三个1-D数组(x,y,z).我希望能够使用其中一个维度作为关键字对这些数组进行排序,并重新排序其他两个维度以匹配. 例如,如果我的输入是: > @x =(1,3,2) 我按x排序,我希望结果如下: > @x =(1,2,3) 如果能让生活更轻松,我可以将三个1-D阵列合并为2-D阵列. 解决方法use strict; use warnings; use Data::Dumper; use List::Util qw(reduce); my @x = (1,2); my @y = (11,12); my @z = (21,22); my @combined = map { [ $x[$_],$y[$_],$z[$_] ] } 0 .. $#x; my @sorted = sort { $a->[0] <=> $b->[0] } @combined; my $split_ref = reduce { push @{$a->[$_]},$b->[$_] for 0 .. $#$a; $a;} [[],[],[]],@sorted; print Dumper @combined; print Dumper @sorted; print Dumper $split_ref; 这基本上会给你: [ [ 1,3 ],[ 11,13 ],[ 21,23 ] ]; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |