1

次の多次元配列を作成するとします。

my @array;  # don't need the empty list
my @other_array = (0 ... 10);

foreach my $i ( 0 .. 10 ) {
$array[$i] = [ @other_array[1..$#other_array] ];
}

この多次元配列の「列」を別の配列にまとめたいのですが、

たとえば、最初の列のアイテムを収集したい場合、次のようなものが欲しいです

my @other_array = ();
@other_array = $array[:][1]; # This does NOT work in Perl

ループせずにPerlでこれを行う方法はありますか?

最終的に私がやりたいことはmax、多次元配列の各列の配列を取得することです。

PS: この質問は、この他の質問に触発されています: Building and printing a multidimensional list in Perl without looping .

4

3 に答える 3

5

私はあなたが欲しいと思います:

my @other_array = map { $_->[1] } @array;

別の言語には、この操作のための特別な構文があるかもしれませんが、それでも内部でループを実行しています。

于 2012-09-12T17:48:08.900 に答える
4

友達になるmap

my @other_array = map $array[$_][1], 0 .. $#array;

スライス セクションにperldoc perllolは、さらに多くの例があります。

于 2012-09-12T17:48:40.893 に答える
2

あなたの例では、これはやり過ぎの解決策かもしれませんが、巨大な多次元配列 (行列) でこれを行うことを計画していると仮定しPDLtranspose、目的の行を切り出します。

于 2012-09-12T19:06:46.917 に答える