主にプログラミングに関して。Python, .NET Framework(C#), JavaScript, その他いくらか。
記事にあるサンプルやコードは要検証。使用に際しては責任を負いかねます

スポンサーサイト

                
tags:
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

イテレータとジェネレータ

                
tags:
 今まで繰り返し文から値を取り出しつつループを続けたい場合、return文で欲しい値を返して、また関数に引数を与えてそこからループを再開して...とやっていた。しかしそんなときにはイテレータとジェネレータを使うといいということがわかった。

 ジェネレータyieldはループ文を途中で止めるが、内容を保持したままにするのでイテレータnext()でまた呼び出せばその続きを実行するらしい。勘違いしないでおきたいのは、yieldの直後から再開するということ。ループの最初から再開するというわけではない。

 というわけでまた素数を返す関数を書いた、今回はジェネレータで。


def sosu():
num=1

while True:
num += 1

if num==2:
yield num
elif not num%2:
pass
else:
half = num/2
amarizero=False
for k in range(3, half):
if not num%k:
amarizero=True

if amarizero:
pass
else:
yield num

x=sosu()
print [next(x) for k in range(100)]
            

コメントの投稿

非公開コメント

プロフィール

Matoba

Author:Matoba

最新記事
リンク
作ったものなど
月別アーカイブ
カテゴリ
タグリスト

検索フォーム
Amazon
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。