でばぐめ -IT技術メモ-

主にハードウェア/ソフトウェアのプログラミングに関するブログです。


テーマ:

Perlでリスト内の同じ値を取り除きたい場合は、ハッシュを使えば簡単にできます。


my @array = qw(a b a d d d c);

my %hash = ();

foreach (@array) {
$hash{$_}++;
}

my @unique = keys %hash;


foreach 内の $hash{$_}++ は 重複をカウントしていますが、$hash{$_}=1 で重複をカウント
しなくてもよいですね。

重複を取り除く方法は、perlfaq に、いくつか方法が記載されています。

%perldoc -q duplicate


mapを用いた方法

my %hash = map { $_, 1 } @array;
my @unique = keys %hash;


ハッシュスライスを用いた方法

my %hash;
@hash{ @array } = ();
my @unique = keys %hash;

foreachを用いた方法

$hash{$_} = 1 foreach ( @array );
my @unique = keys %hash;


grepを用いた方法

my %hash = ();
my @unique = grep { ! $hash{ $_ }++ } @array;


普段 perlfaqをみることはなく、すぐGoogle検索に頼ってしまうのですが、
perlfaqは色々なノウハウが詰まっていることを改めて感じました。


関連書籍

初めてのPerl 第5版/Randal L. Schwartz

¥3,780
Amazon.co.jp

初心者にもわかりやすく書かれていますが、
全くの初心者というより、少しPerlに慣れてきた時に威力を発揮する本です。
簡単なテキスト操作のためにPerlを使用するのであれば十分事足ると思います。

プログラミングPerl〈VOLUME1〉/ラリー ウォール

¥5,565
Amazon.co.jp

ページ数も多く、価格もそれなりなので、Perlについて詳しく知りたい人向けです。
"初めてのPerl"と重複する箇所も多々あるので、これからがっちりPerlを身につけたい人は
こちらをおすすめします。
AD
いいね!(0)  |  コメント(0)  |  リブログ(0)

AD

Amebaおすすめキーワード

Ameba人気のブログ

Amebaトピックス

ランキング

  • 総合
  • 新登場
  • 急上昇
  • トレンド

ブログをはじめる

たくさんの芸能人・有名人が
書いているAmebaブログを
無料で簡単にはじめることができます。

公式トップブロガーへ応募

多くの方にご紹介したいブログを
執筆する方を「公式トップブロガー」
として認定しております。

芸能人・有名人ブログを開設

Amebaブログでは、芸能人・有名人ブログを
ご希望される著名人の方/事務所様を
随時募集しております。