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で値を返した直後から処理を継続実行することができます。

イテレータの仕組みを利用して、効率よく繰り返し処理の実行をしていきましょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

Python

前の記事

Python(リスト内包表記)
Python

次の記事

Python(例外処理について)