Ame*_*ina 0 perl multidimensional-array
这篇文章的最佳答案:如何在Perl中创建多维数组?建议建立一个多维数组如下:
my @array = ();
foreach my $i ( 0 .. 10 ) {
foreach my $j ( 0 .. 10 ) {
push @{ $array[$i] }, $j;
}
}
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种方法可以更紧凑地构建数组并避免嵌套循环,例如使用类似的东西:
my @array = ();
my @other_array = (0 ... 10);
foreach my $i ( 0 .. 10 ) {
$array[$i] = @other_array; # This does not work in Perl
}
}
Run Code Online (Sandbox Code Playgroud)
Perl是否支持任何语法来构建没有嵌套循环的多维数组?
同样,有没有办法在没有(嵌套)循环的情况下打印多维数组?
有多种方法可以做到:
push接受LISTs
my @array;
push @{$array[$_]}, 0 .. 10 for 0 .. 10;
Run Code Online (Sandbox Code Playgroud)
替代语法:
my @array;
push @array, [ 0 .. 10 ] for 0 .. 10;
Run Code Online (Sandbox Code Playgroud)
map 秀色可餐
my @array = map { [ 0 .. 10 ] } 0 .. 10;
Run Code Online (Sandbox Code Playgroud)
替代语法:
my @array = map [ 0 .. 10 ], 0 .. 10;
Run Code Online (Sandbox Code Playgroud)
最小的循环
print "@$_\n" for @array;
Run Code Online (Sandbox Code Playgroud)
在Perl 5.10+上
use feature 'say';
say "@$_" for @array;
Run Code Online (Sandbox Code Playgroud)
具有更多格式控制
print join( ', ', @$_ ), "\n" for @array; # "0, 1, 2, ... 9, 10"
Run Code Online (Sandbox Code Playgroud)
"没有循环" (循环对你隐藏)
use Data::Dump 'dd';
dd @array;
Run Code Online (Sandbox Code Playgroud)
Data::Dumper
use Data::Dumper;
print Dumper \@array;
Run Code Online (Sandbox Code Playgroud)
请查看perldoc perllol更多详细信息
| 归档时间: |
|
| 查看次数: |
364 次 |
| 最近记录: |