イテラブル
__next__メソッドにより値を順に取り出すことのできるオブジェクトのことをイテレータといい、pythonではfor文の制御などによく利用されている。
イテレータに変換可能なオブジェクトのことをイテラブルといい、リスト、辞書、range()オブジェクト、ジェネレータ型など多くのオブジェクトがイテラブルである。
イテラブルは__iter__メソッドをもつ。これはそのオブジェクトをもとにして作ったイテレータ型のインスタンスを返すメソッドである。
リスト型はイテラブルオブジェクトである。
code:iterable00.py
x = 1, 2, 3 # xはリスト型(イテラブルオブジェクト)である
print(type(x))
y = x.__iter__() # __iter__メソッドがイテレータを返す
print(type(y)) # yはリストから作られたイテレータ
rangeオブジェクト【buildin】はイテラブルである。
code:iterable00.py
x = range(3) # xはrange型(イテラブルオブジェクト)である
print(type(x))
y = x.__iter__() # __iter__メソッドがイテレータを返す
print(type(y)) # yはrange型から作られたイテレータ
iter関数【builtin】を使ってイテレータを作ることもできる。
code:iretable02.py
a = 1, 2, 3
b = iter(a)
print(type(a))
print(type(b))
x = range(5)
y = iter(x)
print(type(x))
print(type(y))
このようにして作られたイテレータの使い方についてはイテレータ参照。
関連:イテレータ、ジェネレータ