Python × 入門 | #12 リストにデータをまとめよう

これまでは、xscore のように、1つの変数に1つの値を入れて扱ってきました。しかし、点数が10人分ある、部品名をまとめたい、センサー値を順番に記録したい、という場面では変数を何個も作るのは大変です。

リスト は、複数の値を順番に並べて1つの変数で管理する仕組みです。リストを使えるようになると、for ループと組み合わせて、たくさんのデータを同じ処理で扱えるようになります。

リストで複数のデータをまとめよう

まずはPycoBlocksを開こう

下のPycoBlocksで直接作業するか、別タブで開き、生成されるPythonコードを見ながら進めてください。

用語 意味
リスト(list) 複数の値を順番に並べたデータ。[] で表す scores = [80, 65, 90]
インデックス(index) リストの何番目かを指す番号。0から始まる scores[0] → 先頭の要素
append() リストの末尾に値を追加するメソッド scores.append(75)
len() リストの要素数(個数)を返す関数 len(scores) → 3

ステップ1:リストは「順番つきの入れ物」

リストは、値を左から順番に並べたデータです。Pythonでは [] を使って表します。PycoBlocksでは、まず「空のリスト」を作り、そこへ値を追加していきます。

リストを作って0番目を表示
fruits = []
fruits.append("apple")
fruits.append("orange")
fruits.append("grape")
print(fruits[0])

append() は、リストの最後に値を追加する命令です。上の例では、fruits という1つの変数の中に、3つの果物名を順番に入れています。

ステップ2:インデックスは0から始まる

リストの何番目かを指定する番号を、インデックスと呼びます。Pythonでは最初の要素が 0番目 です。2番目の要素を取り出したいときは 1 を指定します。

インデックスアクセス
fruits = ["apple", "orange", "grape"]
print(fruits[0])  # apple
print(fruits[1])  # orange
print(fruits[2])  # grape

「1番目」と聞くと最初を想像しやすいですが、Pythonでは 0 が先頭です。このルールは、リスト・文字列・あとで学ぶアルゴリズムでも何度も出てきます。

ステップ3:長さを調べる・中身を書き換える

リストは、あとから値を追加したり、特定の場所の値を書き換えたりできます。要素数を調べるには len() を使います。

リストの長さと書き換え
scores = []
scores.append(80)
scores.append(65)
scores.append(90)
scores[1] = 75
print(len(scores))

scores[1] = 75 は、1番目、つまり2つ目の値を75に書き換えます。len(scores) はリストの要素数を返すので、この例では 3 が表示されます。

ステップ4:リストとforを組み合わせよう

リストの強みは、複数の値をまとめるだけではありません。for と組み合わせると、リストの中身を1つずつ取り出して同じ処理を実行できます。

リストを順に表示
parts = []
parts.append("LED")
parts.append("sensor")
parts.append("motor")

for item in parts:
    print(item)

for item in parts: は、parts の中身を先頭から順に item へ入れて繰り返します。リストの要素数が増えても、同じ形のコードで処理できます。

コーディングモードで書いてみよう

コードで書くと、リストはデータ処理の入口になります。たとえば、複数の点数をリストに入れておき、合計と平均を計算できます。

scores = [80, 65, 90, 75]

total = 0
for score in scores:
    total = total + score

average = total / len(scores)
print("合計:", total)
print("平均:", average)

len(scores) を使うと、点数の個数をコード中に直接書かずに済みます。リストの中身が増えても、平均を求める式を変えなくてよい点が便利です。

演習課題

演習では 0-7 で学んだ if 文をリストの for 処理と組み合わせます。条件を満たす要素だけを取り出す書き方を練習します。

課題12-1:果物リストの先頭を表示しよう

空のリスト fruits を作り、appleorangegrape を追加してください。そのあと、先頭の要素を表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:果物リスト
fruits = []
fruits.append("apple")
fruits.append("orange")
fruits.append("grape")
print(fruits[0])

解説: fruits[0] は先頭の要素を表します。Pythonのインデックスは0から始まる点を確認してください。

課題12-2:2つ目の点数を書き換えよう

scores に 80, 65, 90 を追加し、2つ目の点数を75に書き換えてください。最後にリストの長さを表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:点数を書き換える
scores = []
scores.append(80)
scores.append(65)
scores.append(90)
scores[1] = 75
print(len(scores))

解説: scores[1] は2つ目の要素です。len(scores) はリストの長さを返します。

課題12-3:部品名を順番に表示しよう

partsLEDsensormotor を追加し、for を使って1つずつ表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:部品リストを順に表示
parts = []
parts.append("LED")
parts.append("sensor")
parts.append("motor")

for item in parts:
    print(item)

解説: for item in parts: により、リストの中身が先頭から順に item に入ります。

課題12-4:点数の合計を求めよう

scores = [80, 65, 90, 75] とし、for を使って合計を求めて表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:点数の合計
scores = [80, 65, 90, 75]

total = 0
for score in scores:
    total = total + score

print(total)

解説: total を0から始め、点数を1つずつ足していきます。リストの中身が増えても、ループの形は同じです。

課題12-5:平均点を求めよう

課題12-4を発展させ、合計だけでなく平均点も表示してください。平均は 合計 / 個数 で求めます。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:平均点
scores = [80, 65, 90, 75]

total = 0
for score in scores:
    total = total + score

average = total / len(scores)
print("合計:", total)
print("平均:", average)

解説: len(scores) で点数の個数を調べています。個数を直接4と書かないので、点数が増えても直しやすいコードになります。

課題12-6:70点以上だけを数えよう

scores = [80, 65, 90, 75] から、70点以上の点数が何個あるかを数えて表示してください。

▶ 模範解答と解説を見る

ブロックの組み合わせ例:

模範解答:70点以上カウント
scores = [80, 65, 90, 75]

count = 0
for score in scores:
    if score >= 70:
        count = count + 1

print(count)

解説: 0-7で学んだ if とリストの for を組み合わせています。条件を満たしたときだけ count を1増やします。

まとめ

  • リストは、複数の値を順番つきでまとめるデータです
  • Pythonのインデックスは0から始まります
  • append() で末尾に追加し、len() で長さを調べます
  • list[index] で取り出し、list[index] = 値 で書き換えます
  • リストと for を組み合わせると、複数データを同じ処理で扱えます

次は 辞書 を学びます。リストが「順番」でデータを管理するのに対し、辞書は「名前つきのキー」でデータを管理します。→ Python × 入門 | #13 辞書を使いこなそう

PAGE TOP