15 / 2755%

LESSON 15 ・ リスト

リストとwhile

要素を更新する

a = [65, 90, 85]

print(a[0])
print(a[1])
print(a[2])

a[0] = 67

print(a[0])

a[0] = 67のように、インデックスを指定して特定の要素だけ更新することもできます。

ループですべての要素を処理する

a = [65, 90, 85]

i = 0
while i < 3:
    print(a[i])
    i += 1

リストを使えばループと組み合わせて処理することができます。a[i]のように[ ]の中に変数を使うことができるので、ループで変数の値を1ずつ増やしながら処理することができるからです。

このiのように、ループの制御に使う変数をループ変数と呼ぶことがあります。ループ変数にはindexの頭文字を取ってよくiが使われます。

要素数に合わせて繰り返す

a = [65, 90, 85]
print(len(a))

i < 3のように、人数をコード中にベタ書き(ハードコード)してしまうと、人数が増えたときにコードも修正しなければなりません。lenを使えばリストの長さ(要素数)を得ることができます。この例では3が出力されます。

a = [65, 90, 85]
n = len(a)

i = 0
while i < n:
    print(a[i])
    i += 1

lenを使えば、さっきのループのコードはこのように書き換えられます。

a = [65, 90, 85]

i = 0
while i < len(a):
    print(a[i])
    i += 1

lenの結果を変数に代入せず、条件式に直接len(a)を使うこともできます。

PRACTICE

演習問題

コードを自分で書いて実行してから、答えと解説を確認しましょう。

問題1

点数659085をまとめたリストの最初の要素を70に更新し、更新後の値を表示してください。

答えと解説を見る

模範解答

scores = [65, 90, 85]
scores[0] = 70
print(scores[0])

インデックス0を指定して代入すると、最初の要素だけを更新できます。

問題2

[4, 8, 12, 16]のすべての要素を、whileを使って順番に表示してください。繰り返す回数は要素数から求めてください。

答えと解説を見る

模範解答

numbers = [4, 8, 12, 16]

i = 0
while i < len(numbers):
    print(numbers[i])
    i += 1

ループ変数iをインデックスとして使います。len(numbers)まで繰り返すため、要素数を変えても同じコードで処理できます。

問題3

点数607590をまとめたリストがあります。whileを使って、すべての点数を5ずつ増やし、更新後の値を順番に表示してください。

答えと解説を見る

模範解答

scores = [60, 75, 90]

i = 0
while i < len(scores):
    scores[i] += 5
    print(scores[i])
    i += 1

scores[i]を使うと、ループのたびに異なる要素を更新できます。表示される値は658095です。