Last updated: April 26 2012.- 2009. Kajiyama             [ 目次に戻る ]

二次元の配列を扱う



  1. 二次元の配列 [ i ][ j ]

    ・Rubyでは一次元の配列 [ a, b, c, d ] しか用意していない.一次元配列 [ ]を合成して二次元配列[i][j]を作成する.

    二次元配列 = [
              [ 要素00, 要素01,要素02,要素02 ] ,
              [ 要素10, 要素11,要素12,要素12 ] ,
              [ 要素20, 要素21,要素22,要素22 ] ,
              [ 要素30, 要素31,要素32,要素32 ] ,

              ]


    ・二次元配列 [ i ][ j ]の要素番号(index)は[ 行番号 i ][ 列番号 j ]で指示できる.

    ・二次元配列 [ i ][ j ]の行番号(index)は,0から始まり,i= 0,1,2,3・・・である.

    ・二次元配列 [ i ][ j ]の列番号(index)は,0から始まり,j= 0,1,2,3・・・である.


  2. 一次元の配列を集めて2次元の配列を作る. [ [ 要素0, 要素1, 要素2, 要素3], [ 要素0, 要素1, 要素2, 要素3] ]

    ・各行の列の数は同じ.一次元の配列の要素の数は同じであること.


    ・次のソースファイルをコピーして,RDEエディタに貼り付け,作業フォルダー「Ruby_work_190」の中に「Ary2_01.rb」のファイル名で保存する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Ary2_01.rb STDOUT.sync = true row_0 = ["", "年代", "麻雀する", "麻雀しない", "答えられない"] #0行目の一次元配列 row_1 = ["1", "1960年", "90", "40", "10"] #1行目の一次元配列 row_2 = ["2", "1970年", "60", "60", "10"] #2行目の一次元配列 row_3 = ["3", "1980年", "30", "60", "5"] #3行目の一次元配列 a = [ row_0, row_1, row_2, row_3 ] #0〜3行目を行とする二次元行列作成 p a #二次元配列のデータ構造
    実行結果 [ ["", "年代", "麻雀する", "麻雀しない", "答えられない"], ["1", "1960年", "90", "40", "10"], ["2", "1970年", "60", "60", "10"], ["3", "1980年", "30", "60", "5"] ]



  3. 二次元配列の要素を直接呼び出す.


    ・次のソースファイルをコピーして,RDEエディタに貼り付け,作業フォルダー「Ruby_work_190」の中に「Ary2_02.rb」のファイル名で保存する.

    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Ary2_02.rb STDOUT.sync = true a = #二次元配列 [ [ "", "年代", "麻雀する", "麻雀しない", "答えられない" ], [ "1", "1960年", "90", "40", "10" ], [ "2", "1970年", "60", "60", "10" ], [ "3", "1980年", "30", "60", "5" ] ] puts "#行 a[3]を取り出す" #行を取り出す p a[3] #行列の要素[i][j]を取り出す puts "\n# 要素a[0][3]を取り出す" p a[0][3] #二次元配列の行番号[0],列番号[3]の要素のデータ puts "\n# 要素a[1][1]を取り出す" p a[1][1] #二次元配列の行番号[1],列番号[1]の要素のデータ puts "\n# 要素a[3][4]を取り出す" p a[3][4] #二次元配列の行番号[3],列番号[4]の要素のデータ puts "\n#作成していない配列の要素も存在し表示する" p a[0][5] #二次元配列の行番号[0],列番号[5]の要素のデータ p a[5][5] #二次元配列の行番号[5],列番号[5]の要素のデータ
    実行結果 #行 a[3]を取り出す ["3", "1980年", "30", "60", "5"] # 要素a[0][3]を取り出す "麻雀しない" # 要素a[1][1]を取り出す "1960年" # 要素a[3][4]を取り出す "5" #作成していない配列の要素も存在し表示する nil C:/Users/XXXXXX/My Documents/Ruby_work_190/rb1F. tmp:29:in `
    ': undefined method `[]' for nil:NilClass (NoMethodError)



  4. 転置行列 二次元配列の行と列を入れ替える

    ・次のソースファイルをコピーして,RDEエディタに貼り付け,作業フォルダー「Ruby_work_190」の中に保存する.


    ソースファイル
    #! ruby -Ks # coding: windows-31j # ファイル名 Ary2_03.rb STDOUT.sync = true a = [ ["", "年代", "麻雀する", "麻雀しない", "答えられない"], ["1", "1960年", "90", "40", "10"], ["2", "1970年", "60", "60", "10"], ["3", "1980年", "30", "60", "5"] ] puts"#変更前の二次元配列の内容" p a #変更前の二次元配列の内容 a2 = a.transpose #転置行列にする puts"#変更後の二次元配列の内容" p a2 #変更後の二次元配列の内容
    実行結果 #変更前の二次元配列の内容 [ ["", "年代", "麻雀する", "麻雀しない", "答えられない"], ["1", "1960年", "90", "40", "10"], ["2", "1970年", "60", "60", "10"], ["3", "1980年", "30", "60", "5"] ] #変更後の二次元配列の内容" [ ["", "1", "2", "3"], ["年代", "1960年", "1970年", "1980年"], ["麻雀する", "90", "60", "30"], ["麻雀しない", "40", "60", "60"], ["答えられない", "10", "10", "5"] ]



[ 目次に戻る ]