カテゴリー
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

stringクラスについて知ろう

この章ではstring(文字列)クラスについて説明します。
今まではダブルクォートやシングルクォートを付けた文字列を扱ってきましたが、これらはstringクラスのオブジェクトです。
「”犬 “」という文字列は9と書いても同じ意味になります。
ここからはstringクラスに関する便利な機能について説明します。
初めに文字列のサイズを取得する方法について説明します。
例をみてみましょう。9 「文字列.length」と言う形式で日本語や半角英数字や全角英数字などのサイズ(文字数)を取得できます。
この例の結果は上から「5」と「8」です。
バイト数を取得したい場合は9と言う形式で取得します。
では例をみてみましょう。99
次はsplitメソッドについて説明します。
では例をみてみましょう。99 文字列を特定の文字で分割して配列にします。
区切り指定文字は配列には入りません。
この例は文字列を9で区切って、それを配列にします。
結果は9という配列を出力します。
次の例をみてみましょう。9 文字列の中身を1文字ずつ配列で取り出したい場合は9と、記述します。
結果は9です。
次の例をみてみましょう。9 第二引数(先頭から2つ目の引数)は文字列を何個の要素に分割したいかを記述します。
変数aの文字列は9という文字列で一部構成されていますが、これはカラ文字を意味しています。
カラ文字も含めて分割したい場合は第2引数をマイナス指定します。

9でもマイナスであれば何でもいいです。
この例の結果は9です。
このカラ文字を分割時に削除したい場合はsplitメソッドの第 2引数に0を指定してください。
もしくは9と、0を付けなくてもいいです。
結果は9です。
次の例をみてみましょう。9 文字列を2つの要素を持つ配列にしたいのであれば第2引数には2を指定します。
結果は9です。
「”猫”」と9の2つに分割されています。9 次は文字列から要素を取り出したり、文字列の要素に新たな要素をセットする方法について説明します。
では例をみてみましょう。9 9と言う形式で指定するとそれに応じた文字列が取得できます。
添え字は一番前が0で次が9と数えます。
これは配列の添え字と考え方は一緒です。
この例の結果は「s」です。
その他の例をみてみましょう。9 日本語でも同じく使用できます。
結果は「あ」です。9 第 2引数を指定すると取り出す個数を指定できます。この例の場合は0番目の添え字から3個取り出すと言う意味になりますので、結果は「str」です。
次は添え字を使って、文字列の一部の中身を変えます。9 添え字で指定した位置に文字を上書きしたい場合には9と言う形式で指定します。
結果は「stoing」です。
次は「ここからここまで」という指定方法で要素を上書きする方法について説明します。9 「a[2..5]」は文字列の2番目から5番目まで要素を9で置き替えるので、答えは「star」になります。

次は文字列同士をつなげる方法について説明します。
では例をみてみましょう。9 文字列同士をつなげて新しい文字列を作成するには「+」を使用します。
結果は「string123」です。
他の方法でも文字列同士をつなげることは出来ますので例をみてみましょう。99 文字列同士をつなげる方法は2つあり、1つ目は92つ目は9を使います。
これらを使った場合は元の文字列自体の値が変わります。

次は文字列同士を比較する方法について説明します。
では例をみてみましょう。9 文字列同士が一致しているかどうかを調べるには9を使います。
一致していればtrue、一致していなければfalseになります。
次の例をみてみましょう。9 文字列同士が一致していないかを調べるには9を使います。
一致していなければtrue、一致していればfalseになります。

次の例は文字列を繰り返す演算子について説明します。9 「文字列*繰り返す回数」という構文で文字列を繰り返すことが出来ます。
この例では9と言う文字列を3回繰り返しています。
結果は9です。

次は文字列の中の文字が何番目にあるのかを調べる方法について説明します。99 指定の文字列の中で検索したい文字が何番目にあるのかを調べ、その位置を数値で返します。
indexメソッドは前から検索を始めて、rindexメソッドは後ろから検索を始めます。
しかし、何番目にあるのかを数えるのはindexでもrindexでも前からです。
a.index(“n”)は前から検索をするので、結果は4です。0から数えて4番目にあると言う意味です。
a.rindex(“n”)は後ろから検索するので、結果は16です。
ここで注意して欲しいのは後ろから指定文字を検索をするのですが、結果である指定文字の位置の特定は前から数えると言うことです。
では次に進みます。
文字列の中の何番目にあるかでは無くて、ただその文字が存在するかどうかを調べるには9を使います。9 文字列の中に検索文字が存在するかどうかを調べます。
含まれるときはtrue、含まれないときにはfalseを返します。
では例をみてみましょう。9 結果は「yes」です。
次は文字列の一部分を削除するslice!メソッドについて説明します。
では例をみてみましょう。99 結果はbを削除したので「acd」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。
次の例をみてみましょう。99 結果はb,c,dを削除したので「aefg」です。

次はユーザーに何かを入力してもらう時に使うgetsメソッドについて説明します。
では例をみてみましょう。9 まず初めに「年齢は?」と入力するように促します。
そして、「65」と、入力すると、その入力した結果がageに代入され、結果が出力されます。9 このようにユーザーに入力させるためのメソッドがgetsメソッドです。
ここで気を付けてほしいことは入力値が入っているage変数には改行も一緒に入っていますので9と出力しても、以下のように9だけが改行されてしまいます。9 そこでこの改行を消す機能がRubyには用意されていますので、次の例を見てみましょう。99 chompメソッドは、文字列の最後の改行文字を取り除いた新たな文字列を作成します。
この例ではユーザーが入力した文字列の改行を取り除きます。
結果は以下の通り、改行が取り除かれているのが分かります。9 その他にchomp!メソッドもありますが、これは元の文字列自体から改行を取り除いたものを作成します。9 では例をみてみましょう。9 結果は「abcd」です。

次はchompメソッドと同じようなメソッドのchopメソッドやchop!メソッドについて説明します。
chopメソッドは文字列の末尾が改行でも普通の文字でも関係なく、末尾を削除した新しい文字列を作成します。
chop!メソッドはchopメソッドと機能が同じですが、新しい文字列を作成するのではなく、元の文字列自体から末尾の文字を取り除いたものを作成します。9 では例をみてみましょう。9 結果はdが取り除かれているので「abcです」が出力されます。
chopメソッドの例をみてみましょう。9 ユーザーに入力してもらう場合はgets.chopと、記述します。
結果は以下の通りです。9
次はeach_lineメソッドについて説明します。このメソッドは繰り返し構文の一種ですが、文字列を指定文字で分割して、一行ずつ取り出してくれます。
では例をみてみましょう。99 引数を記述するとその文字列が改行文字になります。
引数を省略するとデフォルトでは9が改行文字になります。9 改行文字を取り除いて文字列を出力したい場合は以下のようにchompを付けます。9 結果は「123」です。
次はeach_byteメソッドについて説明します。
では例をみてみましょう。99 each_byteメソッドは文字列の中の一文字一文字のバイトコードを取り出して、変数に入れて出力するメソッドです。
結果は「8297」です。
R の文字コードが82で、aの文字コードが97なので、8297が出力されます。

次はeach_charメソッドについて説明します。
では例をみてみましょう。99 このメソッドは文字列の一文字一文字に対して繰り返し操作を加えるメソッドです。
結果は「1+2+3+4+」ですが、このように文字と文字の間に何か他の要素を入れたりすることが出来ます。
変数の値を他の文字と結びつけるには9と書きます。
次は文字列の中から特定の要素を削除するdeleteメソッドとdelete!メソッドについて説明します。
では例をみてみましょう。99 deleteメソッドは文字列の中から特定の要素を削除した新しい文字列を作成します。
delete!メソッドは新しい文字列を作成するのではなく、元の文字列から特定の要素を削除した文字列を作成します。
結果は「いうえお」です。
次の例をみてみましょう。9 結果は「いうえお」です。
次は文字列を浮動小数点数(Floatオブジェクト)に変換するto_fメソッドについて説明します。
では例をみてみましょう。9 文字列を浮動小数点数に変換しますが、3.789@の中の「@」のように浮動小数点数とは関係ない要素は削除されます。
9のようにすべて浮動小数点数とは関係ない要素の場合は「0.0」が出力されます。
結果は以下の通りです。9

文字列を10進数の整数に変換するto_iメソッドについて説明します。
では例をみてみましょう。99 文字列を10進数の整数に変換しますが、小数点以下は削除されます。
3.789@の中の「@」のように整数とは関係ない要素は削除されます。
9のようにすべて整数とは関係ない要素の場合は0が出力されます
結果は以下の通りです。9
次はreverse!メソッドとreverseメソッドについて説明します。
では例をみてみましょう。99 これは文字列を逆順に並べるメソッドです。
reverseメソッドは文字列を逆順に並べた新しい文字列を作成します
reverse!メソッドは元の文字列の順序を逆順にしたものを作成します。
結果は「おえういあ」です
次の例をみてみましょう。9 結果は「おえういあ」です。
次は文字列を他の文字列に変更するreplaceメソッドについて説明します。
では例をみてみましょう。9 9このメソッドは文字列を別の文字列に変更します。
この例では「あいうえお」を「かきくけこ」に書き替えます。
結果は「かきくけこ」です。

次は小文字を大文字に変換するupcase!メソッドとupcaseメソッドについて説明します。
では例をみてみましょう。99 upcaseメソッドは小文字を大文字に変換した新しい文字列を作成します。
upcase!メソッドは元の文字列を小文字から大文字に変換した文字列を作成します。
結果は「ABCD」です。
次の例を例をみてみましょう。9 結果は「ABCD」です。
次は大文字を小文字に変換するdowncase!メソッドとdowncaseメソッドについて説明します。
では例をみてみましょう。99 downcaseメソッドは大文字を小文字に変換した新しい文字列を作成します。
downcase!メソッドは新しい文字列を作成するのではなく、元の文字列を大文字を小文字に変換した文字列を出力します。
結果は「abcd」です。
次の例をみてみましょう。9 結果は「abcd」です。
次は文字列がカラかどうかを調べるempty?メソッドについて説明します。
では例をみてみましょう。9 9文字列がカラであるならばtrue,文字列に何か入っていればfalseです。
結果は「カラです」が出力されます。
次は文字列の中の特定の文字の要素数を調べるcountメソッドについて説明します。
では例をみてみましょう。9 99は文字列の中にaが何個あるかを調べ、9は文字列の中にabが何個あるかを調べ,9は文字列の中にaからzまでのアルファベットが何個あるかを調べています。9 先頭の小文字を大文字して、残りの文字列は小文字にするcapitalize!メソッドとcapitalizeメソッドについて説明します。
では例をみてみましょう。9 9capitalizeメソッドは先頭の文字を大文字して、残りの文字列は小文字にする新しい文字列を作成します。
capitalize!メソッドは新しい文字列を作成するのではなく、元の文字列の先頭の文字を大文字して、残りの文字列は小文字にする文字列を作成します。
結果は「Abcd」です。
次の例をみてみましょう。9 結果は「Abcd 」です。
次は文字列の最初の文字を取り除くchrメソッドについて説明します。
では例をみてみましょう。9 9取り除かれた文字列の最初の文字が返されます。
結果は文字列の最初の文字「A」が出力されます。
次は文字列をカラ文字にするclearメソッドについて説明します。
では例をみてみましょう。9 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

カテゴリー
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になります。