イテレーター(Python)
typing記法で目に止まり、スルーしていたiterator。勉強メモです。
・iteratorはもとのオブジェクトのコピー
イテレーター=iter(オブジェクト)でコピーを生成。オブジェクトがリストなどiterableなものだと、next(イテレーター)でコピーから1こずつ取りだすことができる。取り出すとコピーからは消えるので、nextをやりきるとイテレーターは空っぽになる。
→そう、for x in list1 とかのfor文は実はiteratorを回していたのである!
・def __iter__():はクラス内オブジェクトをiterableにする。
例えば
class Mylist:
def __init__(self):
self._my_list =
ml = Mylist()
ml._my_list.extend(['a', 'b', 'c'])
for goods in ml._my_list:
print(goods)
をいじって
class Mylist:
def __init__(self):
self._my_list =
ml = Mylist()
ml._my_list.extend(['a', 'b', 'c'])
for goods in ml:
print(goods)
と、my_listのイテレーターを返すように関数を書いてやることで、スッキリとfor文を回すことができる。他にも、iterableを引数にとる関数がスッキリ使えてコードの抽象度が上がる(=直感的に理解しやすくなる、かも...)。