【Ruby】レッスン4-02:配列を操作しよう

記事内に商品プロモーションを含む場合があります

この記事で学べる知識:配列の操作

この記事の練習問題を解くために必要な知識:
基礎文法、制御構造、メソッド(レッスン1~3)配列の基本配列の操作配列の調査配列の並び替えeachメソッドmapメソッドfilterメソッドハッシュ

<<前のページ Ruby記事一覧 次のページ>>

Rubyの「配列の操作」とは

この章ではRubyにおける「配列の操作」の意味や使い方を学習します。用語の解説が不要な方はここをクリックして練習問題へ飛びましょう。

Rubyの配列はデータを順序に従って格納するための便利なデータ構造です。

配列には複数の操作が用意されており、要素の追加や削除、結合などの操作を簡単に行えます。

本記事では配列の基本的な操作方法について解説します。

配列の要素追加

Rubyでは<< 演算子を使って配列の末尾に要素を追加することができます。

以下に例を示します。

arr = [1, 2, 3]
arr << 4
puts arr.inspect  # => [1, 2, 3, 4]

<< 演算子は配列に対して繰り返し使用可能で、リストの末尾に新しいデータを付け足していきます。

シンプルで効率的なこの操作は、頻繁に使用されます。

inspectメソッド:オブジェクトの内容をデバッグやログ出力のために見やすくする文字列に変換するためのメソッドです。
このメソッドの有無で出力がどう変わるか、確認してみましょう。

配列の結合

Rubyでは+ 演算子を使用して2つの配列を結合することができます。

この操作は新しい配列を作成するため、元の配列は変更されません。

例を以下に示します。

arr1 = [1, 2, 3]
arr2 = [4, 5, 6]
arr3 = arr1 + arr2
puts arr3.inspect  # => [1, 2, 3, 4, 5, 6]

このように+ 演算子で2つの配列を結合すると新しい配列が生成されます。

元の配列には影響がないため、元データを保持したまま新しい配列を得たい場合に有用です。

要素の挿入

insert メソッドを使うことで、配列の任意の位置に要素を挿入できます。

以下の例では配列のインデックス位置1に99を挿入します。

arr = [1, 2, 3, 4]
arr.insert(1, 99)
puts arr.inspect  # => [1, 99, 2, 3, 4]

insert メソッドは挿入位置と挿入する要素を指定するだけで、特定の場所に新しいデータを配置できます。

特定の順序でデータを整列させたい場合に役立ちます。

要素の削除

配列から指定位置の要素を削除するには、delete_at メソッドを使用します。

削除したい要素のインデックスを指定するだけで、その要素が配列から取り除かれます。

arr = [1, 2, 3, 4, 5]
arr.delete_at(2)
puts arr.inspect  # => [1, 2, 4, 5]

このようにdelete_at メソッドを使うと配列の要素を簡単に削除することができます。

必要に応じて配列のサイズを動的に変えたい場合に便利です。

まとめ

配列の操作はデータの管理や操作をスムーズに行うために不可欠なスキルです。

Rubyの配列には豊富な操作が用意されており、効率的にデータを扱うための基本的な技術を身につけることができます。

まずはこの基礎をしっかり理解し、配列を自由自在に操作できるように練習しましょう。

配列の操作の練習問題:配列の追加・挿入・削除をマスターしよう

初期状態で定義された配列に新しい要素を追加したり、要素を挿入したり削除することで、配列の操作を勉強できるプログラムを作成しましょう。

さらに、配列の要素数やランダムな要素を取得する方法も確認します。

この問題の要件

以下の要件に従ってコードを完成させてください。

  • 配列の初期化numbers という配列に [1, 2, 3, 4, 5] を格納すること。
  • 要素の追加: 配列 numbers の末尾に 6 を追加すること。
  • 配列の結合[7, 8] を numbers に結合すること。
  • 要素の挿入: 配列 numbers の2番目の位置(3番目の要素)に 99 を挿入すること。
  • 要素の削除: 配列 numbers の最初の要素を削除すること。
  • 配列のサイズ取得numbers の要素数を取得し表示すること。
  • ランダム要素の取得: 配列 numbers からランダムに1つの要素を取得して表示すること。

ただし、以下のような実行結果となるコードを書くこと。

*****↓↓正解コードの実行結果の例↓↓*****

初期の配列: [1, 2, 3, 4, 5]
末尾に6を追加した配列: [1, 2, 3, 4, 5, 6]
他の配列を結合した結果: [1, 2, 3, 4, 5, 6, 7, 8]
位置2に99を挿入した配列: [1, 2, 99, 3, 4, 5, 6, 7, 8]
最初の要素を削除した配列: [2, 99, 3, 4, 5, 6, 7, 8]
配列のサイズ: 8
配列からランダムに選ばれた要素: 4

この問題を解くヒント

1からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

ヒント1【コードの構成を見る】

正解のコードは上から順に以下のような構成となっています。
(※下記の□はコード内のインデントを表しています)

1:numbers という配列を初期化し、値 [1, 2, 3, 4, 5] を代入
2:puts を使って初期化された配列を表示
3:numbers 配列に << 演算子を用いて 6 を追加
4:puts を使って要素を追加した後の配列を表示
5:新しい配列 [7, 8] を作成し、numbers 配列と結合して再代入
6:puts を使って結合後の配列を表示
7:numbers.insert(2, 99) を使い、配列の3番目の位置に 99 を挿入
8:puts を使って挿入後の配列を表示
9:numbers.delete_at(0) を用いて最初の要素を削除
10:puts を使って削除後の配列を表示
11:numbers.size を用いて配列の要素数を取得し、puts で表示
12:numbers.sample を用いて配列からランダムに1つの要素を取得
13:puts を用いてランダムに取得した要素を表示

ヒント2【穴埋め問題にする】

以下のコードをコピーし、コメントに従ってコードを完成させて下さい。

# 配列の基本的な定義
numbers = [1, 2, 3, 4, 5]
puts "初期の配列: #{numbers}" # 配列の初期状態を表示

# 要素の追加 - 配列に新しい要素を追加する
=begin
【穴埋め問題1】
ここでnumbers配列に6を追加するコードを書いてください。
=end

puts "末尾に6を追加した配列: #{numbers}" # 追加後の配列を表示

# 配列の結合 - 別の配列を追加して結合する
=begin
【穴埋め問題2】
ここでnumbers配列と[7, 8]を結合して再代入するコードを書いてください。
=end

puts "他の配列を結合した結果: #{numbers}" # 結合後の配列を表示

# 要素の挿入 - 指定した位置に要素を挿入する
=begin
【穴埋め問題3】
ここでnumbers配列の3番目の位置に99を挿入するコードを書いてください。
=end

puts "位置2に99を挿入した配列: #{numbers}" # 挿入後の配列を表示

# 要素の削除 - 指定した位置の要素を削除する
=begin
【穴埋め問題4】
ここでnumbers配列の最初の要素を削除するコードを書いてください。
=end

puts "最初の要素を削除した配列: #{numbers}" # 削除後の配列を表示

# 配列のサイズ - 配列の要素数を取得する
puts "配列のサイズ: #{numbers.size}" # 配列の要素数を表示

# 配列のランダムな要素を取得
random_element = numbers.sample
puts "配列からランダムに選ばれた要素: #{random_element}" # ランダムな要素を表示

以上がこの問題の穴埋めコードです。

このヒントを見てもまだ回答を導き出すのが難しいと感じる場合は、先に正解のコードと解説を見て内容を理解するようにしましょう。



練習問題の解答と解説

この問題の一つの正解例とそのコードの解説を以下に示します。

正解コードの例

例えば以下のようなプログラムが考えられます。

# 配列の基本的な定義
numbers = [1, 2, 3, 4, 5]
puts "初期の配列: #{numbers}" # 配列の初期状態を表示

# 要素の追加 - 配列に新しい要素を追加する
numbers << 6
puts "末尾に6を追加した配列: #{numbers}" # 追加後の配列を表示

# 配列の結合 - 別の配列を追加して結合する
more_numbers = [7, 8]
numbers = numbers + more_numbers
puts "他の配列を結合した結果: #{numbers}" # 結合後の配列を表示

# 要素の挿入 - 指定した位置に要素を挿入する
numbers.insert(2, 99) # 配列の3番目の位置に99を挿入
puts "位置2に99を挿入した配列: #{numbers}" # 挿入後の配列を表示

# 要素の削除 - 指定した位置の要素を削除する
numbers.delete_at(0) # 最初の要素を削除
puts "最初の要素を削除した配列: #{numbers}" # 削除後の配列を表示

# 配列のサイズ - 配列の要素数を取得する
puts "配列のサイズ: #{numbers.size}" # 配列の要素数を表示

# 配列のランダムな要素を取得
random_element = numbers.sample
puts "配列からランダムに選ばれた要素: #{random_element}" # ランダムな要素を表示

正解コードの解説

今回のコードではRubyの「配列」を使ってさまざまな操作を実行します。

これにより配列の基本操作(追加、削除、結合、挿入、要素数の取得、ランダムな要素の取得)を学ぶことができます。

それではコードをブロックごとに分解して解説していきましょう。

配列の初期化と初期状態の表示

numbers = [1, 2, 3, 4, 5]
puts "初期の配列: #{numbers}" # 配列の初期状態を表示
  • 配列の初期化numbers という名前の配列に [1, 2, 3, 4, 5] を格納します。このように、配列は角括弧 [] を使って作成します。
  • puts: 配列の現在の内容を画面に出力します。このコードでは文字列の中に #{} を使うことで、変数の値を埋め込むことができます。

配列に要素を追加

numbers << 6
puts "末尾に6を追加した配列: #{numbers}" # 追加後の配列を表示

<< 演算子: 配列の末尾に新しい要素(ここでは 6)を追加します。この方法は簡潔で使いやすいのでよく使われます。

配列の結合

more_numbers = [7, 8]
numbers = numbers + more_numbers
puts "他の配列を結合した結果: #{numbers}" # 結合後の配列を表示
  • 別の配列の作成: 新しい配列 [7, 8] を作成して more_numbers に格納します。
  • + 演算子: 配列を結合します。この場合numbers 配列に more_numbers を結合して、新しい配列を作成しています。

配列に要素を挿入

numbers.insert(2, 99)
puts "位置2に99を挿入した配列: #{numbers}" # 挿入後の配列を表示

insert メソッド: 配列の特定の位置に新しい要素を挿入します。この場合2 番目(インデックスは 0 から始まるため、実際には3番目)の位置に 99 を挿入しています。

配列から要素を削除

numbers.delete_at(0)
puts "最初の要素を削除した配列: #{numbers}" # 削除後の配列を表示

delete_at メソッド: 配列の特定のインデックスにある要素を削除します。このコードでは0 番目(最初の要素)を削除しています。

配列のサイズを取得

puts "配列のサイズ: #{numbers.size}" # 配列の要素数を表示

size メソッド: 配列の現在の要素数を取得します。たとえば[1, 2, 3] という配列ならサイズは 3 になります。

配列のランダムな要素を取得

random_element = numbers.sample
puts "配列からランダムに選ばれた要素: #{random_element}" # ランダムな要素を表示

sample メソッド: 配列の中からランダムに1つの要素を取得します。このコードではnumbers 配列からランダムに要素を1つ選んで random_element に格納しています。

まとめ

このコードでは配列の基本操作について学びました。

配列の追加、結合、挿入、削除、サイズ取得、ランダム選択といった操作は、Rubyプログラミングで頻繁に使われる重要なテクニックです。

これらを習得することで配列を使ったデータ管理や処理がスムーズにできるようになります。

Rubyを使ったプログラミングを楽しみながら、さらに多くの配列操作を試してみてください!

<<前のページ Ruby記事一覧 次のページ>>

この記事への質問・コメント

この記事を作成するにあたりAIを活用しています。

問題ないことは確認していますが、もし間違いや表現の違和感などありましたら、ご指摘頂けると大変助かります。






    Rubyのテキスト&問題集トップへ戻る
    トップページへ戻る