Chapter 3 / Functions & Lists
Lesson 3.2 リスト走査と集計
list を for で回し、合計や平均を計算します。
このページは無料で閲覧できるサンプルです。実際に手を動かして写経し、進捗を保存して学習を進めるには、ログインしてから学習ページへお進みください。
このレッスンで学ぶこと
リスト (list) は、複数の値を順序付きでひとまとめにして扱うための Python の基本データ構造です。[1, 2, 3] や ["apple", "banana"] のように [ ] で囲み、, で区切って作ります。スコア、価格、ユーザー名など、同じ種類の値が複数並ぶ場面は、ほぼすべてリストで表現できます。
リストと for 文の組み合わせは、Python の集計処理の心臓部です。本レッスンでは、合計・平均という最も基本的な集計を題材に、「リストを 1 件ずつ取り出して累積する」という型を身に付けます。同じ型は、最大値、最小値、件数、フィルタリング (条件に合うものだけ集める) など、応用範囲の広いパターンです。
写経 1
写経 1
文字列のリストを順番に表示します。
fruits = ["apple", "banana", "melon"]
for fruit in fruits:
print(fruit)apple
banana
melon写経 2
写経 2
数値のリストを回して合計を取り、平均を出します。
scores = [72, 88, 91, 79]
total = 0
for score in scores:
total += score
average = total / len(scores)
print("average:", average)average: 82.5発展問題 (概要のみ)
発展問題
好きな 4 つの数字のリストを作り、最大値と最小値を表示してみましょう。
numbers = []
発展問題の自動採点はログイン後の学習ページでのみ動作します。
リストを for で 1 つずつ取り出す
for value in scores: と書くと、scores の中身が 1 件ずつ順番に value に代入され、内側のブロックが要素の数だけ繰り返されます。range と組み合わせる場合と違って、インデックスを自分で管理する必要がない (i = 0 → i += 1 のような書き方が不要) のが Python の強みです。インデックスが本当に必要なときは enumerate(scores) を使うと (i, value) のペアで取り出せますが、これは少し先のテーマです。
集計の基本: 合計と平均
合計は total = 0 で初期化し、for の中で total += value、最後に print(total) です。平均はさらに len(scores) で要素数を取り、total / len(scores) で割れば求まります。len() はリスト、文字列、辞書など多くのデータ型の要素数を返す万能関数で、空のリスト (要素 0 件) で割ると ZeroDivisionError が出るので、必要なら if len(scores) > 0: でガードします。
リストの主な操作
- 要素の追加: scores.append(95) で末尾に追加
- 要素の取り出し: scores[0] で先頭、scores[-1] で末尾 (負のインデックス)
- 要素数: len(scores)
- 最大/最小/合計: max(scores)、min(scores)、sum(scores) (組み込み関数)
- ソート: scores.sort() で破壊的に並び替え、sorted(scores) で新しいリストを返す
組み込み関数を使うとループは不要なことも多い
実は合計を求めるだけなら sum(scores)、最大値を求めるだけなら max(scores) と書けば 1 行で済みます。本レッスンであえて for ループで書いているのは、「裏側で何が起きているか」を体に染み込ませるためです。複雑な条件 (条件に合うものだけ集計、複数のリストを横断する集計) になると組み込み関数だけでは書けず、for ループの考え方が必須になります。両方の書き方を持っていて、状況に応じて使い分けられる状態が理想です。
手を動かして練習しましょう
ログインすると、お手本コードを 1 文字ずつ写経しながらブラウザ上で実行し、合否を確認しながら学習を進められます。進捗は自動で保存されます。