2016/06/15更新

[Python] ジェネレーターに入門する

このエントリーをはてなブックマークに追加            

こんにちは、@yoheiMuneです。
本日はPythonのジェネレーターについて、色々とブログを書きたいと思います。

画像

目次




ジェネレーターとは

ジェネレーターとは、range関数などの値を1つずつ生成(=ジェネレート)する仕組みです。例えば、以下のように利用します。
# 値を合計してみる
val = sum(range(1, 101))
print(val) # 5050

# for文で1つずつ表示する
for val in range(3):
  print(val)
# 0
# 1
# 2
と、こんな感じで利用することができます。ここは簡単ですね!
このブログではジェネレーターを自作して見たいと思います。



yieldを用いてジェネレーターを自作する

yieldキーワードを用いることで、ジェネレーターを自作することができます。具体的には以下のような実装を行います。
# 自作のジェネレーター
def my_range(first=0, last=10, step=1):
    number = first
    while number < last:
        yield number
        number += step
そして、以下のように呼び出すことで、ジェネレーターを利用することができます。
# 自作のジェネレータを呼び出してみる
ranger = my_range(1, 5)

# 表示してみると、ジェネレーターであることがわかる
print(ranger)
<generator object my_range at 0x101a9c318>

# 1つずつ値を利用する
for x in ranger:
    print(x)
# 1
# 2
# 3
# 4
このように、yieldを用いることでジェネレーターを使うことができるようになります。yeildキーワードは他の言語でも出てくるので、覚えていて損はないと思います。



参考資料

Pythonの基礎勉強は、以下の書籍を熟読して猛威勉強中です。色々と掲載されていて非常に参考になります。

『入門 Python 3(O'Reilly)』



最後に

今日はPythonのジェネレーターについてブログを書きました。最初はなんのこっちゃと思っていましたが、慣れて使えるようになるとなんだかいい感じ。時を見て色々と使って見たいと思います。

最後になりますが本ブログでは、Python・Swift・Java・フロントエンド・機械学習など雑多に情報発信をしていきます。自分の第2の脳にすべく、情報をブログに貯めています。気になった方は、本ブログのRSSTwitterをフォローして頂けると幸いです ^ ^。

最後までご覧頂きましてありがとうございました!





こんな記事もいかがですか?

RSS画像

もしご興味をお持ち頂けましたら、ぜひRSSへの登録をお願い致します。