【Ruby】レッスン4-02:配列の追加・挿入・削除・結合を使いこなそう

50110130

一つ前のページでは配列の基本について学習しました。

今回は 配列の操作 について見ていきましょう。

Lesson1:基礎文法編
Lesson2:制御構造編
Lesson3:メソッド
Lesson4:コレクション

 ・Lesson4-1:配列の基本を理解しよう
 ・Lesson4-2:配列を操作しよう ◁今回はココ
 ・Lesson4-3:配列を調査しよう
 ・Lesson4-4:配列を並び替えよう
 ・Lesson4-5:eachメソッドを理解しよう
 ・Lesson4-6:mapメソッドを理解しよう
 ・Lesson4-7:filterメソッドを理解しよう
 ・Lesson4-8:ハッシュを理解しよう
 ・確認問題4-☆1:ナインゲームを作ろう
 ・確認問題4-☆2:アラビア数字をローマ数字に変換しよう
 ・確認問題4-☆3:トランプをランダムに配ろう
Lesson5:オブジェクト指向編

<<前のページ

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メソッドで配列の任意の位置に要素を挿入

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

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

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

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

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

delete_atで指定したインデックスの要素を削除しよう

配列から指定位置の要素を削除するには、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からコードを組み立てることが難しい場合は、以下のヒントを開いて参考にしましょう。

Q
ヒント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 を用いてランダムに取得した要素を表示

Q
ヒント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}" # ランダムな要素を表示

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

この問題の解答例と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
# 配列の基本的な定義
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}" # ランダムな要素を表示
Q
正解コードの解説

コードをブロックごとに分割して解説します。

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

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学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

Rubyの記事一覧

次のページ>>

FAQ|Ruby配列の追加・削除・挿入・結合操作に関するよくある質問

Q
Q1. Rubyで配列に要素を追加する方法にはどんなものがありますか?

Rubyでは<<演算子がよく使われますが、pushメソッドでも同様に末尾への追加が可能です。どちらも配列の末尾に新しい要素を加える機能がありますが、可読性や用途に応じて使い分けましょう。

Q
Q2. insertメソッドを使うと既存の要素はどうなりますか?

insertメソッドは指定したインデックスに要素を挿入し、それ以降の要素を後ろにずらします。つまり既存の要素は上書きされず、配列全体のサイズが1つ増える点に注意が必要です。

Q
Q3. 配列を結合すると元の配列は変更されますか?

+演算子で配列を結合した場合は、新しい配列が生成され、元の配列には影響しません。元の配列を変更したい場合はconcatpush(*array)など破壊的なメソッドを使う必要があります。

記事URLをコピーしました