perl中的concat列
我的perl代码中的每次迭代都会生成一个5的向量。 第一次迭代的输出是perl中的concat列,perl,merge,concat,Perl,Merge,Concat,我的perl代码中的每次迭代都会生成一个5的向量。 第一次迭代的输出是 out1 1 2 3 4 5 第二次迭代生成相同长度的向量 out2 10 20 30 40 50 然后它运行了第n次 out n 100 200 300 400 500 我希望合并这些列,并以表格格式或矩阵格式获得最终输出,如果您愿意: out1 out2 ... outn 1 10 100 2 20 200 3 30 300 4 40 400
out1
1
2
3
4
5
第二次迭代生成相同长度的向量
out2
10
20
30
40
50
然后它运行了第n次
out n
100
200
300
400
500
我希望合并这些列,并以表格格式或矩阵格式获得最终输出,如果您愿意:
out1 out2 ... outn
1 10 100
2 20 200
3 30 300
4 40 400
5 50 500
我尝试过拆分,然后使用推送,但它会打印“(101)”,并且只打印一次,而不是全部打印20。我也不知道“(101)”是从哪里来的
有什么建议吗?首先,将所有这些输出列表放到一个列表中。其次,在该列表上迭代:在第一次迭代中输出每个元素列表的第一个元素,在第二次迭代中输出每个元素列表的第二个元素,依此类推 比如说
#!/usr/bin/perl
use strict;
use warnings;
use Data::Dumper;
my @lists;
for my $i (1..10) {
my @list;
push @list, $_ * $i for (1..5);
push @lists, \@list;
}
$Data::Dumper::Indent = 0;
print Dumper(\@lists), "\n\n";
while (@{$lists[0]}) {
for my $list (@lists) {
print shift @$list, "\t";
}
print "\n";
}
输出:
$ perl t.pl
$VAR1 = [
[1,2,3,4,5],
[2,4,6,8,10],
[3,6,9,12,15],
[4,8,12,16,20],
[5,10,15,20,25],
[6,12,18,24,30],
[7,14,21,28,35],
[8,16,24,32,40],
[9,18,27,36,45],
[10,20,30,40,50]
];
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
注意:
Data::Dumper
的输出已经过编辑,使其更加紧凑。在处理过程中将向量信息保存到数组中。然后,您可以使用简单的联接输出行:
use strict;
use warnings;
my @rows;
for my $i (1..10) {
my @vector = map {$i * $_} (1..5);
push @{$rows[$_]}, $vector[$_] for (0..$#vector);
}
for my $row (@rows) {
print join(" ", map {sprintf "%-3s", $_} @$row), "\n";
}
产出:
1 2 3 4 5 6 7 8 9 10
2 4 6 8 10 12 14 16 18 20
3 6 9 12 15 18 21 24 27 30
4 8 12 16 20 24 28 32 36 40
5 10 15 20 25 30 35 40 45 50
注意:如果您提供了代码和实际数据,则建议会容易得多。请参阅编辑的问题。请在问题中包含您的问题代码。显示代码,我们可以向您展示如何修复。否则,您需要说明向量是如何存储的,以及向量是如何输出的。