1

私が perl で抱えているこの問題について、アドバイスをいただければ幸いです。

配列があり、たとえば次の整数が含まれている場合:

1, 2, 3, 1, 1, 1, 1, 7, 1, 4, 1, 1, 1

ハッシュを使用してキーの数を計算すると、キーと値のペアは次のようになります。

1 => 9, 2 => 1, 3 => 1, 4 => 1, 7 => 1

後で使用するために、両方の数値セット (キーと値) を異なる配列に割り当てることができ(9, 1, 1, 1, 0, 0, 1)ます0。リストに表示される、つまり56、これを perl でどのようにコーディングしますか?

ありがとう!

4

2 に答える 2

1
use List::Util qw( max );

my @a = (1, 2, 3, 1, 1, 1, 1, 7, 1, 4, 1, 1, 1);

my %counts;
++$counts{$_} for @a;

my @counts = map $counts{$_} // 0, 1..max(keys(%counts));
于 2012-08-30T23:40:00.797 に答える
0

簡単に:

my @counts = map { $_ || 0 } @hash{ 1 .. 7 };

1 から 7 までの数値を使用してハッシュをスライスします。 undef対応する値を持たないキーに対して が返されるため、mapはすべての Boolean-false 値をゼロに変換します。

于 2012-08-30T23:40:51.890 に答える