カテゴリー
Python

リストを操作する他の機能を知ろう

この章ではリストを操作する他の機能について説明します。
初めにリストの要素数を取得する方法について説明します。
では例をみてみましょう。9 リストの要素数を取得する構文は以下の通りです。9 len関数ではリストの要素の数を取得することが出来ます。
この例では猫からネズミまで要素は5つありますので結果は5です。
戻り値をaなどの変数に入れてもいいです。9 次は指定した要素の添え字を取得する方法について説明します。
では例をみてみましょう。9 指定した要素の添え字を取得する構文は以下の通りです。9 indexメソッドは同じ要素が複数ある場合には1番前から検索して、最初に見つかった要素に該当する添え字を取得します。
9は2つありますが、最初に見つかった要素に該当する添え字を取得するので結果は0です。 

次はリストの中で同じ要素が何個あるかを確認する方法について説明します。
では例をみてみましょう。9 リストの中で同じ要素が何個あるのかを確認する構文は以下の通りです。9 countメソッドはリストの中で同じ要素が何個あるのかを取得します。
9という要素は2つありますので、結果は2です。
次はリストの中に指定した要素が存在するのかを確認する方法について説明します。
では例をみてみましょう。9 リストの中に指定した要素が存在するか確認するには以下の構文を使います。 9 この形式はリストの中に指定した要素が含まれていれば true,含まれていなければfalseを返します。
このtrueや falseについては「条件分岐ifの公式1」で説明しますので、今は分からなくても結構です。
もう1つ、他の構文を紹介します。9 この構文はリストの中に指定した要素が含まれていれば false,含まれていなければtrueを返します。
結果は以下の通りです。9

次はリストの順番を並び変える方法について説明します。
では例をみてみましょう。9 リストの順番を並び替えるには以下の構文を使います。 9 sortメソッドはリストの中身を並び替えます。
数値の場合は小さい方から大きい方へ、文字列の場合は文字コードの順番で並び替えます。
アルファベットの場合にはアルファベット順に並び替えますが、小文字より大文字の方が前に並びます。
結果は次の通りです。9
次の例はリストの中の要素を単純に逆にする方法について説明します。
では例をみてみましょう。9 リストの中の要素を逆するには以下の構文を使います。9 reverseメソッドはリストの中の要素を単純に逆にします。
結果は以下の通りです。9

次は文字列からリストを作成する方法について説明します。
では例をみてみましょう。9

次の構文(list)で文字列からリストを作成する事が出来ます。9 結果は次の通りですが、リストのカッコが付いているのが分かります。9

カテゴリー
Ruby

Arrayクラスについて知ろう

この章では配列の順番を変えたりするArrayクラスのメソッドなどについて説明します。これらのメソッドはArrayクラスにあらかじめ備わっている機能です。
初めにsliceメソッドについて説明します。9 a番目の添え字の要素からbの数だけ要素を取り出した新たな配列を作ります。9 この例の場合は犬から数えて3個取り出しています。
結果は9です。
sliceのもう一つの使い方を説明します。99 この構文は引数が1つですが、aの添え字に相当する要素を取り出して、その要素を返してくれます。
結果は「犬」です。
また9と同じ意味を、atメソッドを使って作ることが出来ます。99

次はsliceの引数に範囲演算子を使った例です。99 0番目の要素から3番目の要素までを切り取って新たな配列を返してくれます。9 次は連続していない配列の要素を切り取って、新たな配列にする方法です。
sliceは連続した要素しか切り取ることが出来ませんでした。
連続していない配列の要素を切り取るには9を使います。
9この構文では添え字に相当する要素を取得できます。
では例をみてみましょう。9 このように任意の添え字を指定するとその添え字に相当するデータを配列として取得できます。
結果は9です。

次は配列同士を足したり引いたりする演算を説明します。
では例をみてみましょう。99 num1とnum2と言う2つの配列がありますが、これに対して演算を行います。9 =>配列同士を足すと2つの配列の要素を重複した要素も一緒に足し合わせて、配列を作ります。
結果は9です。9 =>配列同士を足し合わせますが重複した要素は1つの要素とする配列をつくります。
結果は9です。
9=> num1からnum2にある要素を取り除いた配列を作ります。
num2の6,7,8はnum1には存在しないので無視されます。
結果は9です。

次は配列の先頭や末尾に新たな要素を付け加えたり、取り除いたりするメソッドについて説明します。
初めにunshiftメソッドについて説明します。99 この例ではサイを配列の先頭に付け加えていますので、
結果は以下の通りです。9 次はshiftメソッドについて説明します。99 この例では先頭の要素である猫を取り除いているので結果は9です。

次はpushメソッドについて説明します。99 この例ではサイを配列の末尾に付け加えていますので、結果は9です。
次はpopメソッドについて説明します。99 この例では末尾の要素であるネズミを取り除いているので、結果は9です。

次はfirstメソッドについて説明します。99 この例では猫を返しますので、結果は「猫」です。

次はlastメソッドについて説明します。99 この例ではネズミを返しますので、結果は「ネズミ」です。
次はconcatメソッドについて説明します。99 配列animalの末尾に別の配列9を結びつけますので、結果は以下の通りです。9 次はcompactメソッドとcompact!メソッドについて説明します。
違いは「!」が付いているか、付いていないかです。9 compactメソッドはnilを取り除いた新しい配列を作ります。
compact!メソッドもnilを取り除きますが、新しい配列を作るのではなく、元の配列自体を操作します。
では例をみてみましょう。9 結果は9ですが、元の配列も変わっているのが分かります。
次の例をみてみましょう。9 新しい配列を作るので、新たな配列aを作って、それにnilを取り除いた配列を代入しています。
結果は9です。
試しに9で出力すると元の配列9が変わらずに出力されます。
次はdeleteメソッドについて説明します。
では例をみてみましょう。99 猫を削除したので、結果は9です。

次はdelete_atメソッドについて説明します。
では例をみてみましょう。99 deleteは引数に要素そのものを指定するのに対して、9は添え字を指定します。
結果は9です。

次はdelete_ifメソッドについて説明します。
では例をみてみましょう。99 delete_ifメソッドは条件に合致した要素だけを削除します。
配列のそれぞれの要素が変数にセットされ、ブロック内の条件に合致した要素だけを削除します。
この例では7を超えている要素を削除しますので、8、9が削除されます。
結果は9です。

次はreject!メソッドについて説明します。
では例をみてみましょう。99 delete_ifメソッドと同じ働きをするreject!メソッドを説明します。
reject!メソッドは条件に合致した要素だけを削除します。
条件に合致した要素を新しい配列に入れるのではなく、元の配列に対して操作を行います。
結果は9です。

次はrejectメソッドについて説明します。
では例をみてみましょう。99 rejectメソッドは条件に合致した要素だけを削除します。
条件に合致した要素を新しい配列に入れます。
reject!メソッドは元の配列に対する操作でしたね。
結果は9です。

次はuniq!メソッドとuniqメソッドについて説明します。
uniq!メソッドは配列の要素の中で同じ要素があった場合には1つにまとめます。
また、このメソッドは新しい配列を作るのではなく、元の配列に対して操作を行います。
uniqメソッドは配列の要素の中で同じ要素があった場合は1つにまとめます。
また、このメソッドは新しい配列を作ります。9 では例をみてみましょう。9 結果は4つある1が1つになったので、9です。
次の例をみてみましょう。9 このメソッドは新しい配列を作りますので、配列aという新しい配列に結果を代入してから、出力しています。

次はcollec!メソッドについて説明します。
では例をみてみましょう。99 collec!メソッドは要素の数だけブロックの中を実行し、そのブロックで処理した結果を返します。
また、このメソッドは新しい配列を作るのではなく、元の配列に対して操作を行います。
この例では配列の要素に100を足したものを元の配列に入れています。
結果は9です。
これはmap!メソッドを使って、9と書き替えても同じ意味になります。9

次はcollectメソッドについて説明します。
では例をみてみましょう。99 collectメソッドは要素の数だけブロックの中を実行し、そのブロックで処理した結果を新たな配列として作成します
結果は9です。
次はfillメソッドについて説明します。
では例をみてみましょう。99 fillメソッドは配列の要素を指定した要素で置き替えます。
このメソッドは新たな配列を作成するのではなく元の配列に対して操作を行います。
結果は9です。
fillメソッドの別の例をみてみましょう。99 添え字を指定すると添え字以降の要素が指定した要素で置き換わります。
結果は9です。
fillメソッドの別の例をみてみましょう。99 添え字と個数を指定すると添え字から指定した個数だけ、指定した要素で置き替わります。
結果は9です。
さらにfillメソッドの別の例をみてみましょう。99 範囲演算子で「ここからここまで」と指定する方法です。
この例では3から6までの添え字の範囲を猫に変えています。
結果は9です。

次はreverse!メソッドについて説明します。
では例をみてみましょう。99 reverse!メソッドは配列の順序を逆にした配列を作成します。
この動作は新たな配列に対してではなく、元の配列に対して行われます。
結果は9です。
次はreverseメソッドについて説明します。
では例をみてみましょう。99 reverseメソッドは配列の順序を逆にした配列を作成します。
この動作は元の配列に対してではなく、新たな配列に対して行われます。
結果は9です。
次はsort!メソッドについて説明します。
では例をみてみましょう。99 sort!メソッドは配列の要素を小さい順に並び変えます。
この動作は新たな配列に対してではなく、元の配列に対して行われます。
結果は9です。

次はsortメソッドについて説明します。
では例をみてみましょう。99 sortメソッドもsort!メソッドと同じ機能なので、配列の要素を小さい順に並び変えます。この動作は元の配列に対してではなく、新たな配列に対して行われます。
結果は9です。
次の例をみてみましょう。99 このsortメソッドは「ブロックでソートする機能」です(ブロックとは{ }の中です)。
この動作は元の配列に対してではなく、新たな配列に対して行われます。
この例のブロック内は9となっていますが、これは大きい順になります。
結果は9です。
次の例をみてみましょう。99 このsort!メソッドは「ブロックでソートする機能」です。
この動作は新たな配列に対してではなく、元の配列に対して行われます。9 次は配列に文字列を追加する方法について説明します。
基本構文は以下の通りです。9 これは配列に文字列を付け加えて新たな配列を作成するのではなく、元の配列自体を変更します。9 結果は9です。

カテゴリー
JavaScript

様々なオブジェクト(Arrayオブジェクト)について知ろう3

この章ではArrayオブジェクトについて説明します。
Arrayオブジェクのプロパティやメソッドで配列に対して様々な操作を行うことが出来ます。
配列の要素の順番を変えたりするプロパティやメソッドについて説明します。1 length プロパティは配列の最後の添え字に1を足した数を返します。
では例をみてみましょう。11 1=>添え字に1を足した数を返すと書きましたが、簡単に言いますと要素の数です。
要素の数は5個なので、5を返します。

1=>「配列.length =数;」と言う形式で記述すると配列の要素を増やしたり、減らしたりすることが出来ます。
この例の場合は配列の要素を2つ増やして、7にしています。
追加した残りの要素には何も入っていないので、
1と、出力すると結果は
undefined
undefined
です(未定義値)。
逆にperson1.length=2;と、要素数を減らすと残りの要素は無くなってしまいますので、for文で取り出すと
結果は
kondou
shimizu
です。1 toStringメソッドはArrayオブジェクトを文字列に変換します。
配列の要素を「,」で繋げた形で出力されます。
では例をみてみましょう。1 結果は以下の通りです。11 joinは配列の要素を指定した区切り文字で区切って繋げてくれます。
例の場合は「@」で区切っています。
では例をみてみましょう。1 結果は以下の通りです。1 以下のようにjoinのカッコの中をカラにしますと、「,」で連結されます。
person1.toString()と同じ結果になります。1 結果は2つとも以下の通りです。11 sortメソッドはArrayオブジェクトをアルファベットの順番に変えます。
では例をみてみましょう。1 結果は上から以下のように出力します。11 アルファベットを使った配列の場合はアルファべット順に変えてくれるので問題ないですが、
1のように要素が数字の場合は数字の順番に並べてくれるわけではないので、気を付けてください。1 reverseメソッドはArrayオブジェクトを現在の要素と逆順に変えます。
では例をみてみましょう。1 結果は上から以下のように出力します。11 sliceメソッドは配列の要素を取り出します。
では例をみてみましょう。1 以下に開始位置、終了位置の数え方を書きます。
終了位置は指定した位置の一つ前までになります。
0番目 kondou 
1番目 shimizu 
2番目 honda
3番目 doumoto
4番目 inukai
結果は上から以下の通り出力します。11 =>spliceは開始位置から数えて何個置換するか決めて、それを置換文字列で置き換えます。
1=>開始位置から何個削除するか指定すると、その要素が削除されます。
では例をみてみましょう。1 では説明を始めます。1 1切り取った要素はこの例のsのように受け取ることが出来ます。1 3個切り取ったのに、2個しか代わりに入れなかった場合には要素数が1つ減ることになります。
逆に3個切り取って、代わりに4個入れた場合は要素数が1つ増えることになります。
結果は上から以下の通り出力します。11 popメソッドは、配列の一番後ろの要素を削除します(要素の数は1つ減る)。
では例をみてみましょう。1 結果は上から以下の通り出力します。1 削除したものを受け取りたい場合は1のように変数で受け取ります。
最後に1と、出力すると末尾のinukaiが削除された状態で出力されているのが解ると思います(元の配列も実際に削除されます)。1 pushメソッドは、配列の末尾に要素を追加します(追加した分、要素数は増えます)。
カンマで区切れば、いくらでも要素を追加することが出来ます。
では例をみてみましょう。1 結果は上から以下の通り出力します。1 要素数を受け取りたい場合は1のように変数で受け取ります。
この例の場合は4です。
つまり、pushメソッドの戻り値は要素数です。
1を出力するとkonno,hiroが追加されているのがわかります。1 shiftメソッドは、配列の一番前の要素を削除します(要素の数は1つ減ります)。
では例をみてみましょう。1 削除した要素を受け取りたい場合は1のように変数で受け取ります。
1で出力すると実際にkondouが削除されて出力されているのが解ります。
結果は上から以下の通り出力します。11 unshiftメソッドは、配列の一番前に要素を追加します(追加した分、要素数は増えます)。
カンマで区切れば、いくらでも追加することが出来ます。
では例をみてみましょう。1 要素数を受け取りたい場合は1 のように変数で受け取ります。この例の場合は7です。
つまり、unshiftメソッドの戻り値は要素数です。
1で出力するとyumenoとnakataが追加されているのがわかります。1 例えば以下のsliceメソッドは文字を取り出していますが、これは元の配列には影響しませんが、上のpopメソッドなどは実際の配列まで変化します。1 上から出力すると以下の通りに出力しますが、途中で取り出しても最初と最後の配列の要素が変わっていないことが分かります。1

カテゴリー
PHP

配列に関しての関数について知ろう

この章では配列に関しての関数について説明します。
関数とは入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
配列に関しての関数とは配列の順番を変えたりする関数のことです。
では関数の基本について説明します。1 PHPの関数の仕組みはエクセルの関数の仕組みと意味は同じです。
エクセルをご存知の方はわかると思いますが、エクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。
SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
引数とは関数内で使われるデータの事で、上の説明で言えば3,5,7の事です。
PHPには初めからこのように機能が定義されている関数が多数ありますので、この章では配列に関係する関数を取り上げたいと思います。1 unshift関数は配列の1番上に要素を追加する関数です。1 先頭に鹿を追加したので、1では鹿が出力されます。

1 array_push関数は配列の1番下に要素を追加する関数です。11と同じことは1と書いても実現できます。
1番下に猿を追加したので、1では猿が出力されます。
1array_shift関数は配列の1番上から要素を削除します。1 先頭から猫を削除したので、1では犬が出力されます。
1array_pop関数は配列の1番下から要素を削除する関数です。
1末尾からネズミを削除します。
1sort関数は配列の値を昇順つまり小さい値から大きい値に並び変える関数です。1 sortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は 「1259」 です。
次の例をみてみましょう。1 sortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は 「bgt」 です。
次の例をみてみましょう。1 =>連想配列をsortすると、添え字が0から数値で振り直されてしまうので注意が必要です。
つまり1が数値に変わってしまうということです。1 配列のキーと値との関係を維持しつつ、配列をソートしたい場合は後ほど説明するasort関数とarsort関数を使います。1 rsort関数は配列の値を降順つまり大きい値から小さい値に並び変える関数です。1 rsortを行ってからforeachで取り出します。
この例では数値をソートしています。
結果は「9521」 です。1 rsortを行ってからforeachで取り出します。
この例では文字列をソートしています。
結果は「tgb」 です。1 asort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、昇順に並び変えます。1 11arsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象は値であり、降順に並び変えます。11 1ksort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、昇順に並び変えます。
111krsort関数は配列のキーと値との関係を維持しつつ、配列をソートする関数です。
比較の対象はキーであり、降順に並び変えます。1 11array_slice関数は配列の指定した位置から要素を取得する関数です。
基本構文の中の11は省略可能です。
TRUEを指定すると例え配列から要素を取り出してもキーと値の関係は崩れません。
[取り出す数]を指定しない場合は指定した位置から最後まで指定したことと同じことを意味します。
では例をみてみましょう。1 この例では2つ目の要素である栄治から栄太までを切り取り、配列$name2に代入しています。
取り出し位置は0から数えているので、1の場合は2つ目の要素である栄治からになります。
結果は以下の通りです。
0=>栄治
1=>五郎
2=>栄太
次の例をみてみましょう。1 開始位置がマイナス指定の場合は後ろから数えます。
この場合は「-2」なので後ろから2つ目から最後までになります。
取り出す個数を入力してないので、指定した位置から最後までになります。
つまり、終わりから2つ目の要素である五郎と栄太までを切り取り、$name2に代入しています。
結果は以下の通りです。
0=>五郎
1=>栄太
次の例をみてみましょう。1 2つ目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
[取り出す数]を2に指定しているので2つ取り出しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。1 後ろから3個目の要素である栄治から五郎までを2個切り取り、$name2に代入しています。
結果は以下の通りです。
0=>栄治
1=>五郎
次の例をみてみましょう。1 [取り出す数]にマイナス値を指定すると「指定した箇所」から「マイナス値で指定した箇所から右の要素」を省いたデータを取得できます。
つまりこの例で説明しますと指定した開始位置は0なので太郎から始まって、栄太、こじを省いた残りすべてを$name2に代入します。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
次の例をみてみましょう。1 この例のようにTRUEを指定すると取り出した要素が元の添え字のまま配列$name2に入れられます。
結果は以下の通りです。
1=>栄治
2=>五郎
次の例をみてみましょう。1 array_sliceで要素を切り出しても元の配列の要素に影響しません。
1の箇所で配列$name1から要素を切り出しても、配列$name1の要素が切り出される分だけなくなることはありません。
結果は以下の通りです。
0=>太郎
1=>栄治
2=>五郎
3=>栄太
1array_splice関数は配列から取り出しの開始位置や取り出す個数を指定して、取り除いた配列を返します。
では例をみてみましょう。1 2番目の要素から2つ取り除いて$number2に代入しています。
ここでの注目点は配列の要素を取り除くことにより元の配列まで影響を受けるということです。
それに対して1では元の配列はそのままの状態のまま影響を受けません)。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
次のprintの出力は以下の通りです。
0=>PHP
1=>c++
次の例をみてみましょう。1 1のように取り出す数を省略すると指定した位置から最後まで取り除かれます。
最初のprintの出力は以下の通りです。
0=>html
1=>Java
2=>c++
次のprintの出力は以下の通りです。
0=>PHP
次の例をみてみましょう。1 array_spliceでは配列の一部分を削除し、新しい要素で置き替えることもできます。
12番目の要素からhtmlが取り除かれてRubyが挿入されています。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>Ruby
2=>Java
3=>c++
次の例をみてみましょう。1 挿入する要素に配列も指定できます。
最初のprintの出力は以下の通りです。
0=>html
次のprintの出力は以下の通りです。
0=>PHP
1=>word
2=>powerpoint
3=>Java
4=>c++
1配列の値を1度に複数の変数に代入することができます。
では例をみてみましょう。1 $aにはPHP、$bにはhtml、$cにはJava,$dにはc++が代入されます。
結果は1になります。
次の例をみてみましょう。1 連想配列の場合は前の例のようにしても、うまくいきません。
その場合はlist関数とeach関数の組み合わせを使います。
each を実行して配列のキーと値のペアを順番に返して1で出力します。
つまり、以下のようにnameを$aに、大野を$bに代入し1を出力します。
1
次に以下のようにaddressを$aに、東京都を$bに代入し
1を出力します。

1 次に以下のように年齢を$aに、34を$bに代入し1を出力します。1

1in_array関数は配列に指定した値があるか検索し、値が見つかった場合はTRUE、見つからなかった場合はFALSEを返す関数です。
以下にin_array関数の使用例を示します。
以下の例では検索値PHPは配列$arに存在するのでin_array関数はTRUEを返します。1 結果は1が出力されます。

カテゴリー
Perl

ハッシュに関する関数を知ろう

この章ではハッシュの要素に対して、様々な操作をする関数について説明します。
以下が主な関数です。11 では例をみてみましょう。1 1ではkeysについて説明します。1 ハッシュに含まれるキーだけを取り出すにはkeysを使用します。
keysはハッシュに含まれるすべてのキーをリストにして返します。
返されるキーには順番はなく、ランダムにリストに格納されます。
上の例では2つの方法でキーを出力しています。
1つ目の方法はforeachです。
foreachは配列の要素を取り出すのに使いますが、ここではハッシュに含まれるすべてのキーのリストを取り出すのに使います。
2つ目の方法はキーのリストを@keyに入れて、printで出力しています。
では次の例をみてみましょう。111 ハッシュに含まれる値だけを取り出すにはvaluesを使用します。valuesはハッシュに含まれるすべての値をリストにして返します。
返される値には順番はなくランダムにリストに格納されます。
先ほどの例では2つの方法で値を出力しています。
1つ目はforeachです。
foreachは配列の要素を取り出すのに使いますが、ここではハッシュにあるすべての値を取り出すのに使います。
2つ目は値のリストを@valueに入れて、printで出力しています。
次は配列の章でも説明したsort関数について説明しますが、詳しくは配列の章のsort関数の説明を参考にしてください。1 では例をみてみましょう。1 キーを文字列で比較する場合にはcmpを使用します。
1キーを数値として比較したい場合には1を使用します。
11次はハッシュの値をソートする方法について説明します。
1では例をみてみましょう。
1値を数値で比較するので、1を使用します。1
次はeach関数について説明します。1 each関数はハッシュに含まれるキーと値のペアを取り出して、キーと値のペアを返します。
ハッシュの最初のキーと値を取り出しています。
ハッシュは要素間の順番がないので、初めの1が出力されるわけではないので注意してください。
では例をみてみましょう。
11次はexists関数について説明します。
1ハッシュの中に指定したキーが存在するかを確認します。
存在する場合はTRUEを返し、存在していなければFALSEを返します。
キーだけを調べているので、次の例のように値にデータが入っていなくてもTRUEを返します。
1結果は「定義されています」です。
すべてのハッシュのキーに対して、存在するのかチェックしたい場合にはforeach文と一緒にif文でチェックを行います。
11次はdefined関数について説明します。
1defined関数は値が定義されている場合はTRUEを、定義されていない場合はFALSEを返します。
値がカラであるならばFALSEになります。
では例をみてみましょう。
1この例では1の値がカラです。
その場合にはFALSEを返します。
FALSEなので1が実行されます。

次はdelete関数について説明します。
1delete関数は引数に指定したキーと値を削除します。
戻り値は削除が出来たのならばその削除した値になります。1 1このようにprintで %nameの要素を出力することが出来ますが、ハッシュをダブルクォートで囲まないでください。
次はハッシュを初期化する方法について説明します。
11ハッシュの要素を初期化するには、上の例のように空のリストを代入します。
ハッシュにカラのリストを代入することにより、ハッシュの要素がすべて削除されます。
「%name=();」でハッシュの要素を初期化したので、上の例を出力しようとしても何も出力されません。

カテゴリー
Perl

配列の関数について知ろう

この章では配列の関数について説明します。
関数は入力したデータに基づいて決められた処理を行い、戻り値という結果を返す機能を持っています。
このデータは引数と呼ばれています。1 引数1は第1引数、引数2は第2引数と言います。
ここでは第2引数までしか書いていませんが引数3、引数4と続きます。
引数の数は関数によって違います。
では関数についてさらに詳しく説明します。
「Perlの基礎を知ろう」の章では関数については以下の通り説明しました。
Perlの関数の仕組みはエクセルの関数の仕組みと意味は同じです。エクセルをご存知の方はわかると思いますが、例えばエクセル関数にSUMと言う関数が有りますが、この関数は指定した範囲のデータに基づいて足し算を行う関数です。
例えば指定した範囲のデータが3,5,7であるならば結果は15です。SUMには初めから指定した範囲の足し算を行うと言う仕組みが備わっています。
つまり、エクセルの内部機構でSUMの機能は指定した範囲の足し算を行うと言うプログラムがされていると言うことです。
これが関数の意味です。
Perlには初めからこのように機能が定義されている関数が多数ありますので、配列に関係する関数を取り上げたいと思います。
printは出力する関数でしたが、配列の関数は配列のデータの順番を変えたりする便利な関数が多数ありますので、次で紹介します。1 join関数は配列を指定した区切り文字で連結して、その結果を戻り値として返します。1 結果は以下の通りです。
「猫と犬とライオンと象とネズミ」
色々区切り文字を入れて試してみてください。1 shift関数は配列の先頭の要素を切り取って、その切り取った要素を返します。1 $rには取り除いた要素である猫が代入されています。取り除かれた後の配列の要素は改めて添え字が振り直されますので、添え字の先頭は犬になります。1 1unshift関数は配列の先頭に要素を追加します。1 $rには要素追加後の要素数が入りますので6が代入され、@animalは蛙を先頭に追加したので1となります。1 pop関数は配列の末尾のデータを取り除きます。1 $pには取り除いた要素であるネズミが代入され、@animalはネズミが取り除かれていますので1となります。1push関数は配列の末尾にデータを追加します。1 $tには要素追加後の要素数が入りますので6が代入され、@animalは蛇を末尾に追加したので1となります。
1sort関数は氏名やID番号などのデータをアルファベット順や番号順などで並び替える時に使います。
次の通り、sortの基本構文は複数ありますが、順番に説明していきます。1 11結果は以下の通りです。
「E a b c d f」
標準の文字列比較の順番で文字が昇順に並び替えられます。
順序は
〇abc順
〇大文字は小文字より前
〇数値はアルファベットより前という法則で決まります。
1文字を昇順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子です。1 結果は以下の通りです。
「a b c d e f」
1数値が1番前に来ているのが分かります。
1文字コードの降順で比較したい場合は上の構文を使用します。
「sort { $a cmp $b } 配列;」との違いは$aと$bの位置です。
1結果は以下の通りです。
「f e d c b a」
1数値を昇順、つまり123順で比較したい場合は上の構文を使用します。
cmpは文字コードで比較するときに使う演算子でしたが、1は数値で比較するときに使う演算子です。1 結果は「0 2 3 4 7」です。
1数値を降順で比較したい場合は上の構文を使用します。
sort { $a <=> $b } 配列;との違いは$aと$bの位置です。
1結果は「7 4 3 2 0」です。
1reverse関数は引数に指定した配列に含まれる要素を逆に並べた配列を返します。
1結果は以下の通りです。
2 0 7 3 4
f d E a c b
1しかし、splice関数を使用すれば配列の先頭もしくは末尾以外から要素を取り出すことが可能になります。
splice関数には幾つかの構文があります。1 添え字で指定した箇所から末尾までを削除した配列を返します。
1この例ではsplice関数の第2引数が1なので、配列の犬から末尾までの要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果は1です。
@animalには削除後の要素である猫が入っています。
1配列の先頭から末尾までを削除したリストを返します。
1この例ではsplice関数の第2引数を指定していないので、配列のすべての要素が削除対象になります。
@seには配列の中の削除した要素が代入されていますので、
結果は1です。
@animalにはすべてを削除したので何も残っていません。
1添え字で指定した箇所から指定した数だけ削除したリストを返します。
1この例ではsplice関数の第2引数に1を指定しているので犬から2個削除した配列を返します。
@seには配列の中の削除した要素が代入されていますので、結果は1です。
@animalには削除後の要素である1が入っています。
1添え字で指定した箇所から指定した数だけ削除して、その削除した箇所に新たなリストを加えます。
そしてその削除した要素を返します。
1この例ではsplice関数の第2引数に1を指定しているので犬から2個削除してから、その削除した箇所に@animal2の要素を加えます。
@seには配列の中の削除した要素が代入されていますので、結果は「犬 ライオン」です。
@animalには削除した箇所に龍、ネッシーを加えているので、1になります。