将两个数组(逐列)合并到perl中的新复合数组中的方法是什么?
@数组1
car
scooter
truck
Run Code Online (Sandbox Code Playgroud)
@数组2
four
two
six
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下内容:
my @merged = (@array1, @array2); print @merged;
Run Code Online (Sandbox Code Playgroud)
但它将两个数组合并在一列中,如下所示:
car
scooter
truck
four
two
six
Run Code Online (Sandbox Code Playgroud)
但我想要的是如下:
@merged[0] @merged[1]
car four
scooter two
truck six
Run Code Online (Sandbox Code Playgroud)
在Perl中,如果要在列表中添加数组,它将自动展平为单个list。
my @array = (@ar1,@ar2);
Run Code Online (Sandbox Code Playgroud)
如果要存储为数组,则应引用该数组并将其存储到另一个数组,例如
my @array = (\@ar1,\@ar2);
Run Code Online (Sandbox Code Playgroud)
现在@array具有@ar1和的引用@ar2。
然后使用相应的数据类型取消引用的引用
就你而言
print @{$array[0]};
Run Code Online (Sandbox Code Playgroud)
最后,您可以使用以下内容
use warnings;
use strict;
my @array1 = qw(car scooter truck);
my @array2 = qw(four five six);
my @merged = (\@array1,\@array2); #referencing the array1 and array2
foreach my $i (0..$#{$merged[0]})
{
# getting the last index value using $#{$merged[0]}
printf ("%-10s%-10s\n",$merged[0][$i],$merged[1][$i]);
}
Run Code Online (Sandbox Code Playgroud)
my @merged;
for (0 .. $#array1) {
push(@merged, ([$array1[$_],$array2[$_]]));
}
Run Code Online (Sandbox Code Playgroud)
或者
my @merged;
push @merged, map {[$array1[$_], $array2[$_]]} 0 .. $#array1;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7883 次 |
| 最近记录: |