C
Python/中級/Lesson 16

イテレーターとイテラブル

15分·theory
このチャプター
8/8

イテレーターとイテラブル

🎯 このレッスンを読み終えたら

このレッスンをすべて読み終えると、以下の3つを自信を持ってできるようになります。

  • ✅ __iter__ · __next__ の実装でイテラブルを作成する
  • ✅ forループが内部的に呼び出すメソッドを理解する
  • ✅ itertoolsの基本パターンを活用する

学習目標をチェックリストとして手元に置き、すべてに答えられるようになったらレッスンを閉じてください。

イテラブルとイテレーター — コード + 実行結果

forループが動作する本当の理由__iter____next__

1. イテラブル (iterable) = 「forで回せるオブジェクト」

python
# イテラブル: list, tuple, dict, set, str, range, file, generator
for x in [1, 2, 3]:        # list
    print(x)

for c in "abc":            # str
    print(c)

# 共通点: __iter__() がある
lst = [1, 2, 3]
print(hasattr(lst, "__iter__"))    # True

2. イテレーター (iterator) = 「next()を呼べるオブジェクト」

python
# iter() でイテラブル → イテレーター
lst = [1, 2, 3]
it = iter(lst)             # イテレーター生成

print(next(it))            # 1
print(next(it))            # 2
print(next(it))            # 3
print(next(it))            # StopIteration 例外

3. forループが実際に行うこと

python
# for x in lst: print(x) は事実上このように動作:
it = iter(lst)
while True:
    try:
        x = next(it)
        print(x)
    except StopIteration:
        break

4. 自分で作ってみる

python
class カウント:
    def __init__(self, end):
        self.end = end
        self.n = 0

    def __iter__(self):
        return self                # 自分自身がイテレーター

    def __next__(self):
        if self.n >= self.end:
            raise StopIteration
        self.n += 1
        return self.n

for x in カウント(3):
    print(x)               # 1, 2, 3

5. イテラブルとイテレーターの違い

iterableiterator
再利用OK(listのように)一度限り(使い切り)
メソッド__iter____iter__ + __next__
list, str, dictiter(lst), generator

一行まとめ

イテラブル = forで回せる / イテレーター = next()を呼べる。すべてのgeneratorはイテレーター。すべてのイテレーターはイテラブル。

🐍 実際に試してみよう — iterator — 自分で実行

上の概念を実際にコードで実行してみてください。値を変えながら動作を自分の目で確認するのが、最も速い学習方法です。
✏️ Python 코드
📟 コンソール出力
▶ 実行ボタンを押してください
🐍 Pyodideで実際のPythonを実行 — 初回は読み込みに3〜5秒

🤖 AIへのリクエスト例

このレッスンの概念を知っていると、AIに具体的に指示できるようになります。漠然とした「直して」ではなく、語彙を持ったリクエスト — それがトークン節約の出発点です。

  • 「このPythonコードにイテレーターとイテラブルの概念を適用して」
  • 「このコードにtype hintとpytestの単体テストを追加して」
  • 「イテレーターとイテラブル関連のPEP 8違反を確認して」

なぜこれがトークンを減らすのか

概念を知らないと、AIの回答を受け取っても「それは何ですか?」と再度質問しなければなりません。その「再質問」がトークンを消費します。概念を一度習得すれば、会話が一度で終わります。

先に読むとよい概念: try-except — Python 例外処理
次のおすすめ: クラスの基礎
イテレーターとイテラブル - Python