ロジカ式logo

はじめての
Python

ページ一覧に戻る
Lesson16-2 二次元リストと繰り返し
二次元リストと繰り返し
ロボた

リストの中の値を取り出して何かを集計したり、リストの中の値を検索したりするときには、繰り返しを使うといいんだったね!

二次元リストも同じだよ!

ロボち

使い方の例

📝1
繰り返しのカウント変数を使って、二次元リストの中の値を一つずつ取り出す。

二次元リストの中の値を一つずつ取り出す
ロボた

二次元リストの1つの「値(要素)」を指定するには行のインデックス番号と列のインデックス番号を指定してあげるんだったよね!

この二次元リストは、4行と2列で成り立っているね!
「トマトジュース」から順番に値を一つずつ取り出すには、「繰り返し構造」の中に「繰り返し構造」があるプログラミングをするよ!

ロボち
ロボた

外側の繰り返しは4回、内側の繰り返しは2回繰り返しているね!

外側の繰り返しのカウント変数を使って行のインデックス番号を指定しているよ!

ロボち
ロボた

内側の繰り返しのカウント変数は列のインデックス番号を指定しているよ!

変化する2つのカウント変数の値とインデックス番号で指定されたリストの値との対応を表にしてみたよ!

ロボち
変化する2つのカウント変数の値とインデックス番号で指定されたリストの値との対応表

📝2
リストのための「for文」で、リストの値を取り出す。

ロボた

リストについて習ったとき、カウント変数を使わなくてもリストの中の値を取り出す便利なやり方があったことを覚えているかな?

リストのためのfor文があったね!二次元リストでも使えるんだよ!

ロボち
リストのためのfor文
ロボた

二次元リストはリストの中にリストがあるから、「繰り返し構造」の中に「繰り返し構造」があるプログラミングをするんだよ!

ちょっと難しいかもしれないね。
でも、この方法を使うと、存在しない要素をインデックス番号が指定してしまうこともないから、エラーにもならないよ!

ロボち

やってみよう

⌨️1
繰り返しを使って「あ」から「の」まで1文字ずつ順番に出力してください。

PRACTICE
char = [ ["あ", "い", "う", "え", "お"], ["か", "き", "く", "け", "こ"], ["さ", "し", "す", "せ", "そ"], ["た", "ち", "つ", "て", "と"], ["な", "に", "ぬ", "ね", "の"] ]

📖 解答例と解説

繰り返しのカウント変数を使う

char = [
    ["あ", "い", "う", "え", "お"],
    ["か", "き", "く", "け", "こ"],
    ["さ", "し", "す", "せ", "そ"],
    ["た", "ち", "つ", "て", "と"],
    ["な", "に", "ぬ", "ね", "の"]
]
for i in range(5):
    for c in range(5):
        print(char[i][c])

リストのための「for文」を使う

char = [
    ["あ", "い", "う", "え", "お"],
    ["か", "き", "く", "け", "こ"],
    ["さ", "し", "す", "せ", "そ"],
    ["た", "ち", "つ", "て", "と"],
    ["な", "に", "ぬ", "ね", "の"]
]
for i in char:
    for c in i:
        print(c)
ロボた

二重ループを使って1つずつ値を取り出すんだね。


⌨️2
繰り返しを使って「あ」から「の」まで行ごと改行をしながら順番に出力してください。

PRACTICE
char = [ ["あ", "い", "う", "え", "お"], ["か", "き", "く", "け", "こ"], ["さ", "し", "す", "せ", "そ"], ["た", "ち", "つ", "て", "と"], ["な", "に", "ぬ", "ね", "の"] ]

📖 解答例と解説

繰り返しのカウント変数を使う

char = [
    ["あ", "い", "う", "え", "お"],
    ["か", "き", "く", "け", "こ"],
    ["さ", "し", "す", "せ", "そ"],
    ["た", "ち", "つ", "て", "と"],
    ["な", "に", "ぬ", "ね", "の"]
]
for i in range(5):
    for c in range(5):
        print(char[i][c], end = "")
    print()

リストのための「for文」を使う

char = [
    ["あ", "い", "う", "え", "お"],
    ["か", "き", "く", "け", "こ"],
    ["さ", "し", "す", "せ", "そ"],
    ["た", "ち", "つ", "て", "と"],
    ["な", "に", "ぬ", "ね", "の"]
]
for i in char:
    for c in i:
        print(c, end = "")
    print()

表示するとき「改行」しないようにするには「end=""」をつけるんだったね。
内側の繰り返しが終わるたび、改行するようになっているかな?

ロボち

⌨️3
以下のデータを二次元リストに代入し、行ごとの合計値を順番に表示してください。

データ表
PRACTICE

📖 解答例と解説

繰り返しのカウント変数を使う

gokei = 0
data = [
    [60, 80, 90],
    [80, 50, 40],
    [30, 50, 60],
    [70, 60, 80]
]
for i in range(4):
    for c in range(3):
        gokei += data[i][c]
    print(gokei)
    gokei = 0

リストのための「for文」を使う

gokei = 0
data = [
    [60, 80, 90],
    [85, 65, 40],
    [30, 90, 65],
    [73, 48, 80]
]
for i in data:
    for c in i:
        gokei += c
    print(gokei)
    gokei = 0
ロボた

内側の繰り返しではgokeiという変数を作って、値を1つずつ自己代入を行って数値を足しているよ!

「行ごとの合計値」だから、内側の繰り返しが終わるたび、計算結果を表示した後変数gokeiの中身を0に戻しているんだよ!

ロボち
POINT
  •   二次元リストを繰り返しで扱う時は、「繰り返し構造」の中に「繰り返し構造」があるプログラミングをする。
  •   繰り返しのカウント変数を利用すれば、二次元リストの値を順番に処理することができる。
  •   カウント変数を使うときには、繰り返す回数に気をつける。
  •   二次元リストでも「リストのためのfor文」を使えば、繰り返す回数は自動的に調整される。