[Python]中級#5-iterable,iteratorオブジェクト


iterable、iteratorオブジェクト

>>> ds = [1, 2, 3, 4]
>>> ir = iter(ds)  # iterator 객체를 얻는 방법

# iterator 객체를 통해 값을 하나씩 꺼내는 방법
>>> next(ir)  # 첫번째 값 반환
1
>>> next(ir)  # 두번째 값 반환
2
>>> next(ir)  # 세번째 값 반환
3
>>> next(ir)  # 네번째 값 반환
4
以上のコードは以下のように解釈される.iter()関数が呼び出されると、dsにアクセス可能なiteratorオブジェクト(リモコン)が生成されます.
変数irは、iteratorオブジェクトを参照する.
オブジェクトを渡すときに、next関数を呼び出して、リストに格納されている値を取得できます.
それをリモコンにたとえてわかりやすくするためにdsリストを制御できるリモコン(反復オブジェクト)が作成されます.
リモコンのnextボタンを押すだけで、リストの要素を順番にポップアップできます.

このとき、すべてのリストの要素を取り出した後、next()関数を再度呼び出すと、StopIterationという異常が発生します.

iterable、iteratorオブジェクトの区切り


ではiterableオブジェクトとiteratorオブジェクトの違いは何でしょうか.
iter関数が返すオブジェクトをiteratorオブジェクトと呼び,iteratorオブジェクトを得ることができるリストなどのオブジェクトをiterableオブジェクトと呼ぶ.
  • Iterableオブジェクト:iter関数にパラメータとして渡すことができるオブジェクト
  • 奇形オブジェクト:iter関数が生成して返されるオブジェクト(リモコン)
  • すなわち、iterableオブジェクトに対してiter()関数を呼び出してiteratorオブジェクトを生成する!
    🔎 リファレンス
    中級編熱血Python story 05