![]() |
![]() |
![]() |
![]() |
管理運営:有限会社ミスティーネット |
|||
| HOME | ご利用について | 推奨環境 | リンクに関して | 免責/規約 | お問合せ | ミスティーネット | リンク集 | | |||
![]() |
![]()
![]()
![]()
|
HOME >> 配列の処理
■ 配列の使い方
[配列の作成] 配列は下記のようにリストの値を配列変数に代入することで作成できます。 配列は複数のデータを一つの配列変数にまとめることができる為、大量のデータを扱う場合にとても便利な機能です。
@number = (1, 2, 3, 4, 5, 6);
[配列の取り出し方] 配列内の要素を直接扱いたい場合は、配列の添字を使います。 添字は配列内の要素に付けられた0からの連番です。
print $number[0];
添字は0から始まるので、「$number[0]」 は「1」と表示されます。下記は配列 @number のイメージです。(上の数字は添字です) [配列の追加・結合] 配列にデータを追加したい場合は、リスト形式で元の配列と追加したいデータを代入すればOKです。
@number = (0, @number, 7, 8, 9);
上記では、元の @number の前に 「0」 というデータを追加している為、添字もそれに伴って移動します。現在の $number[0] の値は 「0」 になります。 下記は現在の配列 @number のイメージです。(添字の位置がずれていることを確認してください。) 配列と配列を結合させる場合は、追加のときと同様にリスト形式で元の配列を代入すればOKです。
@number2 = (10, 11, 12, 13);
上記では @number3 という配列を新に作って結合させた配列を代入していますが、元の配列(@number や @number2 )に代入することも出来ます。@number3 = (@number, @number2); ← 配列の結合 その際には、元のデータは失われて、新たに結合されたデータが代入されます。 ■ 配列の操作
Perl には配列のデータを操作する為の関数が用意されています。 関数を使うことでデータの追加や削除が簡単に行なえるようになります。 [配列の末尾にデータを追加する] 配列の末尾にデータを追加する場合には「push」関数を使います。
push(@number, 14); ← @number の末尾に14を追加する
[配列の末尾からデータを切り取る] 「pop」関数では、配列の末尾のデータを切り取ってその値を返します。
$last_data = pop(@number); ← @number の末尾のデータを切り取る
「pop」関数では、末尾データを切り取った後そのデータを返すので、$last_data には切り取られたデータがセットされます。
[配列の先頭からデータを切り取る] 「shift」関数では、先頭データを切り取ってその値を返します。
$top_data = shift(@number); ← @number の先頭のデータを切り取る
「shift」関数では、先頭データを切り取った後そのデータを返すので、$top_data には切り取られたデータがセットされます。
[配列の先頭にデータ追加する] 「unshift」関数では、配列の先頭にデータを追加します。
unshift(@number, 0); ← @number の先頭に0を追加する
■ 配列のループ処理
第4章でもご紹介しましたが、配列を処理する場合に「foreach」文を使ってのループ処理が行なえます。
「foreach」文では、配列内の要素を1つづつ取り出し、それをスカラー変数に代入して順番に処理を行います。 foreach $list ( @list ) { 処理 }下記は @number 内の要素を1つづつ取り出して2倍にして表示するプログラムです。
foreach $num ( @number ) {
スカラー変数を特に指定しない場合には、デフォルト変数 $_ に値が代入されます。
print ( $num * 2 ); } 「map」関数を使うと上記と同じ処理をより簡単に行なうことが出来ます。
print ( map { $_ * 2 } @number );
「map」では、デフォルト変数 $_ を使って処理を行ないます。「map」関数に関してのより詳しい情報はこちらをご覧ください。 → map 関数のリファレンス ■ 配列の並べ替え
大量のデータを扱う際には、処理を行なう前に、アルファベット順などでデータを並べ替えて整理しておきたい場合があります。
データの並べ替えには「sort」関数と「reverse」関数を使って簡単に並べ替えを行なうことが出来ます。 [sort 関数] → sort 関数リファレンス sort 関数の書式は下記のようになります。 sort { $a cmp $b } 配列 ← 文字で並べ替える場合(昇順) ○ 文字の順番で並べ替える場合
@list = ('x', 'y', 'a', 'i', 'p', 'm'); print sort { $a cmp $b } @list; ← 文字データを(昇順で)並べ替えて表示する # a, i, m, p, x, y の順番で表示される。 ○ 数の小さい順に並べ替える場合
@list = (9, 7, 11, 2, 8, 42); print sort { $a <=> $b } @list; ← 数値データを(昇順で)並べ替えて表示する # 2, 7, 8, 9, 11, 42 の順番で表示される。 ○ 数の小さい順に並べ替える場合
@list = (9, 7, 11, 2, 8, 42); print sort { $a <=> $b } @list; ← 数値データを(昇順で)並べ替えて表示する # 2, 7, 8, 9, 11, 42 の順番で表示される。 ○ 数値や文字データが混ざっている場合
@list = (43, 'u', 'P', 8, 'あ', 'か');
{ } 内の条件を指定しない場合には、標準的な文字比較で並べ替えられます。print sort @list; ← 標準的な文字列比較で並べ替えを行なう # 8, 43, P, u, あ, か の順番で表示される。 (数値 → 半角英数大文字 → 半角英数小文字 → 全角文字) の順番。 [reverse 関数] → reverse 関数リファレンス reverse 関数は逆順に並べ替えたいときに使います。
@list = (9, 7, 11, 2, 8, 42);
上記プログラムは、「sort { $b <=> $a } @list;」 と同義です。
print reverse @list; ← 数値データを逆順(降順)で並べ替えて表示する # 42, 11, 9, 8, 7, 2 の順番で表示される。
|