LoginSignup
1
2

More than 1 year has passed since last update.

ジェネレータ式に入門する【Python】

Posted at

やりたいこと

  • ジェネレータ式について入門する。

復習

  • イテレータ、イテラブルオブジェクト、ジェネレータ、ジェネレータ関数、ジェネレータイテレータについてはこちらの記事にまとめました。手前味噌で恐縮ですが、よければ参照ください。

ジェネレータ式とは

  • ジェネレータ関数の定義について、リスト内包表記を使って簡単に記述したもの。

ジェネレータ式を使わずに、defでジェネレータ関数を定義し、ジェネレータイテレータを取得する場合、以下のようになります。

def sample_generator_before():
    for x in range(3):
        yield x

g = sample_generator_before()

ジェネレータ式を使って、ジェネレータイテレータを取得する場合、以下のようになります。

# ジェネレータイテレータ = ( 式 for 取り出す要素 in イテラブルオブジェクト ) 
g = (x for x in range(2))

ジェネレータ式を使うと、関数の定義が不要なのでシンプルに書けますね。
複雑な処理を行いその値を返す場合は、ジェネレータ式ではなくジェネレータ関数を使うと良いかもしれません。
ちなみに、どちらの方法で作成したジェネレータイテレータも、以下のように要素を取り出すことができます。

print(g.__next__())  # 0
print(g.__next__())  # 1
print(g.__next__())  # 2
print(g.__next__())  # StopIteration
1
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
2