【Ruby】レッスン4-03:empty?・include?・indexで配列を調査しよう

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の「配列の調査」とは|empty?・include?・indexの基本を学ぼう

配列はRubyでデータを管理する上で非常に重要な役割を果たします。

その中身を調査することでプログラムが正しく動作しているか確認したり、次の処理を決めたりできます。

この章ではRubyで配列を調査するために便利なメソッド「empty?」「include?」「index」について解説します。

empty?メソッドで配列が空かを判定しよう

empty? メソッドを使うと配列が空かどうかを簡単に確認できます。

このメソッドは配列が空であれば true を返し、要素が1つでも存在すれば false を返します。

arr1 = []
arr2 = [1, 2, 3]

puts arr1.empty?  # true
puts arr2.empty?  # false
  • 空の配列をチェックする際に役立つ。
  • 配列が空かどうかを条件分岐で利用することで、無駄な処理を避けることができる。

indexメソッドで要素のインデックスを取得しよう

index メソッドを使うと配列内の特定の要素が最初に見つかる位置(インデックス)を取得できます。

見つからなかった場合は nil を返します。

arr = [10, 20, 30, 40, 50]

puts arr.index(30)  # 2
puts arr.index(60)  # nil
  • 配列内の要素の位置を知りたいときに使用する。
  • 条件によって処理を分岐させたいときに役立つ。

include?を組み合わせた実践的な配列調査例

これらのメソッドを組み合わせることで配列の中身を効率よく調べることができます。

arr = [5, 10, 15, 20]

if !arr.empty? && arr.include?(10)
  index = arr.index(10)
  puts "配列に10が含まれており、そのインデックスは #{index} です。"
else
  puts "配列が空か、10が含まれていません。"
end

このコードを実行すると以下のように出力されます。

配列に10が含まれており、そのインデックスは 1 です。
  • 配列が空でないことを確認(empty?)。
  • 配列に特定の値が含まれているかチェック(include?)。
  • 含まれている場合、その位置を取得して表示(index)。

配列調査メソッドのまとめ

Rubyの「empty?」「include?」「index」は、配列の中身を調べる上で非常に便利なメソッドです。

これらを使いこなすことで配列の内容を簡単に確認でき、プログラムの信頼性を高めることができます。

これらの基本を理解した上で、配列をさらに効果的に活用していきましょう!

練習問題|配列の調査メソッドの使い方を実践しよう

配列の調査をしっかりと身に着けるため、練習問題に挑戦しましょう。

配列調査に関する課題に挑戦しよう

配列に対して調査を行うプログラムを作成しましょう。このプログラムでは、以下の手順を実施します。

  1. 配列が空かどうかを確認します。
  2. 特定の値が配列に含まれているかを調べます。
  3. 指定された値が配列の何番目にあるかを取得し、その位置を表示します。
  4. 空の配列についても調査を行います。

これによりRubyの配列調査メソッドの使い方を習得できます。

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

  1. 配列 arr を [1, 2, 3, 4, 5] と定義すること。
  2. empty? メソッドを使用して、配列が空かどうかを確認し、その結果を出力すること。
  3. include?(値) メソッドを使用して、配列に特定の値(例: 3)が含まれているかを確認し、その結果を出力すること。
  4. index(値) メソッドを使用して、指定した値が配列の何番目にあるかを取得し、結果を表示すること。
    • 値が含まれていない場合はその旨を表示すること。
  5. 空の配列 empty_arr = [] を定義し、empty? メソッドで確認してその結果を出力すること。

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

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

配列が空ですか?: false
3は配列に含まれていますか?: true
3は配列の2番目にあります。
空の配列が空ですか?: true

【ヒント】自力で解くのが難しい人へ

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

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

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

1:配列arr[1, 2, 3, 4, 5]として定義
2:empty?メソッドを使って配列が空かを確認し、その結果を出力
3:変数value_to_checkに値3を代入
4:include?メソッドを使って、配列に値3が含まれているかを確認し、その結果を出力
5:indexメソッドを使って、値3が配列のどの位置にあるかを取得
  □ 値が見つかった場合、結果を出力
  □ 値が見つからない場合、見つからない旨を出力
6:空の配列empty_arr[]として定義
7:empty?メソッドを使って空の配列が空かを確認し、その結果を出力

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

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

# 配列の定義
arr = [1, 2, 3, 4, 5]

# empty? メソッドを使用して配列が空か確認します。
=begin
【穴埋め問題1】
ここでempty?メソッドを使用して配列が空かを確認し、その結果を出力するコードを書いてください。
=end

# include?(値) メソッドを使用して確認します。
value_to_check = 3
=begin
【穴埋め問題2】
ここでinclude?メソッドを使用して、配列に指定の値が含まれているかを確認し、その結果を出力するコードを書いてください。
=end

# index(値) メソッドを使用して値の位置を取得します。
=begin
【穴埋め問題3】
ここでindexメソッドを使用して、指定した値が配列の何番目にあるかを取得し、結果を出力するコードを書いてください。
=end

# 空の配列を定義
empty_arr = []
=begin
【穴埋め問題4】
ここでempty?メソッドを使用して、空の配列が空かどうかを確認し、その結果を出力するコードを書いてください。
=end

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

この問題の解答例と解説

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

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

Q
正解コード
# 配列の定義
arr = [1, 2, 3, 4, 5]

# empty? メソッドを使用して配列が空か確認します。
puts "配列が空ですか?: #{arr.empty?}" # => false

# include?(値) メソッドを使用して確認します。
value_to_check = 3
puts "#{value_to_check}は配列に含まれていますか?: #{arr.include?(value_to_check)}" # => true

# index(値) メソッドを使用して値の位置を取得します。
index = arr.index(value_to_check)
if index
  puts "#{value_to_check}は配列の#{index}番目にあります。" # => 2番目
else
  puts "#{value_to_check}は配列に含まれていません。"
end

empty_arr = []
puts "空の配列が空ですか?: #{empty_arr.empty?}" # => true
Q
正解コードの解説

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

配列の定義

arr = [1, 2, 3, 4, 5]
  • 配列 arr を [1, 2, 3, 4, 5] という要素を持つ形で定義しています。
  • 配列は複数のデータをまとめて格納できる構造で、Rubyでは [] を使って簡単に作成できます。

配列が空か確認する

puts "配列が空ですか?: #{arr.empty?}" # => false
  • empty? メソッドを使って配列が空かどうかを確認しています。
  • このメソッドは配列が要素を持っていない場合に true を返し、要素が存在する場合に false を返します。
  • 今回の例では配列 arr に要素が含まれているため、結果は false になります。

配列に特定の値が含まれているか確認する

value_to_check = 3
puts "#{value_to_check}は配列に含まれていますか?: #{arr.include?(value_to_check)}" # => true
  • include? メソッドを使って、指定した値が配列に含まれているかを調査します。
  • value_to_check に格納された値(ここでは 3)が配列 arr に含まれているため、結果は true となります。
  • このようにして配列の中にある特定の値を確認することができます。

指定した値の位置を取得する

index = arr.index(value_to_check)
if index
  puts "#{value_to_check}は配列の#{index}番目にあります。" # => 2番目
else
  puts "#{value_to_check}は配列に含まれていません。"
end
  • index メソッドを使用して指定した値が配列内のどの位置にあるかを取得します。
  • value_to_check(ここでは 3)の位置を調べた結果、インデックスが 2 であることがわかります。
  • Rubyではインデックスが0から始まるため、ユーザーにとってわかりやすくする場合は「n番目」といった形で表示を工夫します。

空の配列を調査する

empty_arr = []
puts "空の配列が空ですか?: #{empty_arr.empty?}" # => true
  • 空の配列 empty_arr を [] で定義し、empty? メソッドで調査しています。
  • 配列に要素が含まれていないため結果は true になります。

まとめ

今回のコードではRubyの配列操作において重要な「配列の調査」メソッドを学びました。

  • empty?:配列が空かどうかを確認。
  • include?:配列に特定の値が含まれているか確認。
  • index:指定した値の位置を取得。

これらのメソッドを活用することで、配列データの内容や構成を簡単に確認できるようになります。

Rubyの配列操作はデータ処理の基本中の基本です。

これらを繰り返し使いこなして、次のステップとして配列の並び替えやループ処理も学んでいきましょう!

もっと分かりやすいサイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいRuby学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

Rubyの記事一覧

次のページ>>

FAQ|Rubyで配列を調査する方法

Q
Q1. Rubyのempty?メソッドとnil?の違いは何ですか?

empty?は配列や文字列などのオブジェクトに対して使用し、要素が存在しない場合にtrueを返します。一方で、nil?はオブジェクトそのものがnilであるかどうかを判定するメソッドです。たとえば[]はemptyですがnilではありません。

Q
Q2. include?メソッドは複雑なオブジェクトにも使えますか?

はい、include?メソッドは配列の要素にオブジェクトが含まれているかを確認するため、数値や文字列だけでなく、配列内にハッシュやカスタムクラスのインスタンスが含まれている場合にも使えます。ただし、オブジェクトが完全一致している必要があります。

Q
Q3. indexメソッドで最初に見つかったインデックス以外を取得できますか?

indexメソッドは最初に一致した要素のインデックスのみを返します。複数の位置を取得したい場合は、each_with_indexなどを使って条件を満たす要素のインデックスを手動で集める必要があります。

記事URLをコピーしました