Python(ジェネレータ<自作イテレータ>)
# 素数を返すイテレータ
def genPrime(maxNum):
num=2
while (num<=maxNum):
is_prime = True
for i in range(2,num):
if(num % i) == 0:
is_prime = False
break
if(is_prime):
yield num
num += 1
it = genPrime(50)
for i in it:
print(i,end=",")
defで関数定義を行う場合、returnで値や関数オブジェクトを返しますが、yield文を使うことで、そこまでの関数内の状態を保持し、再度その関数が呼ばれた場合、yieldで値を返した直後から処理を継続実行することができます。
イテレータの仕組みを利用して、効率よく繰り返し処理の実行をしていきましょう。