iterable, iterator


iterable

  • 重複可能オブジェクト
  • iterable type: list, dict, set, tuple, str, bytes, range
  • iterator

  • next()メソッド連続呼び出しデータのオブジェクト
  • next()が次のデータをロードできない場合(最後のデータであれば)、StopIteration exceptionが生成される.
  • は必ずしも反復器ではない.
  • iterable → iterator


    iterableをiteratorに変換する場合は
  • iter()
  • __iter__()
  • >>> a = [1,2,3]
    >>> aa = iter(a)
    >>> aaa = a.__iter__()
    >>> type(aa)
    <class 'list_iterator'>
    >>> type(aaa)
    <class 'list_iterator'>

    next(), next()

  • を使用して内部要素を1つずつインポート
  • 他に持ってくるものがなければ、StopIteration例外が発生します.
  • >>> a = iter([1,2,3])
    >>> next(a)
    1
    >>> next(a)
    2
    >>> next(a)
    3
    >>> next(a)
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    StopIteration
    たとえば、csvファイルでタイトル行を除外して読み取りを開始する場合(指定したcsvfileで改行されるリーダオブジェクトを返します)
    import csv
    
    with open('test.csv', 'r', encoding='utf-8') as fp:
        reader = csv.reader(fp)
        header = next(reader)
        for line in reader:
            print(line)