数组 – 清理将数组拆分为三分之一并显示给用户的方法
发布时间:2020-12-15 22:04:36 所属栏目:大数据 来源:网络整理
导读:我在perl脚本中有一个排序数组,例如: qw(aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll) 有没有一种简单的方法可以将它显示在三列中 前三分之一在左栏 中间三分之一在中间栏 并且最后三分之一在右栏 这样就可以在屏幕上显示元素而不是在屏幕上显示元素.
我在perl脚本中有一个排序数组,例如:
qw(aaa bbb ccc ddd eee fff ggg hhh iii jjj kkk lll) 有没有一种简单的方法可以将它显示在三列中 >前三分之一在左栏 这样就可以在屏幕上显示元素而不是在屏幕上显示元素.例如 aaa eee iii bbb fff jjj ccc ggg kkk ddd hhh lll 我一直试图使用模数,但它变得越来越复杂,并认为可能有一个优雅的解决方案.最终我打算将它用于类似于bash中的select. 谢谢. 解决方法use List::MoreUtils qw( part ); my $num_rows = int(@a/3); my @aoa = map [ @a[@$_] ],part { $_ % $num_rows } 0..$#a; print("@$_n") for @aoa; 要么 use List::MoreUtils qw( part ); my $num_rows = int(@a/3); my @aoa = part { $_ % $num_rows } 0..$#a; print("@a[ @$_ ]n") for @aoa; 要么 my $num_rows = int(@a/3); for my $row_num (0..$num_rows-1) { print("@a[ map { $row_num + $num_rows*$_ } 0..2 ]n"); } 以上版本不假设@a%3 == 0. use List::MoreUtils qw( part ); use POSIX qw( ceil ); my $num_rows = ceil(@a/3); my @aoa = map [ @a[@$_] ],part { $_ % $num_rows } 0..$#a; print("@$_n") for @aoa; 要么 use List::MoreUtils qw( part ); use POSIX qw( ceil ); my $num_rows = ceil(@a/3); my @aoa = part { $_ % $num_rows } 0..$#a; print("@a[ @$_ ]n") for @aoa; 要么 use POSIX qw( ceil ); my $num_rows = ceil(@a/3); for my $row_num (0..$num_rows-1) { print("@a[ grep { $_ < @a } map { $row_num + $num_rows*$_ } 0..2 ]n"); } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |