Pythonのyield
文は、ジェネレータ関数を定義する際に使用されるキーワードです。ジェネレータ関数は、イテレータを返す特殊な関数で、yield
キーワードを使用することで、ジェネレータ関数はイテレータを作成し、値を逐次的に生成します。
以下に、yield
を使用したジェネレータ関数の例を示します:
def count_up_to(n):
i = 1
while i <= n:
yield i
i += 1
# ジェネレータ関数を呼び出してイテレータを取得
iterator = count_up_to(5)
# イテレータから値を逐次的に取得
print(next(iterator)) # 1
print(next(iterator)) # 2
print(next(iterator)) # 3
print(next(iterator)) # 4
print(next(iterator)) # 5
# イテレータの末尾に到達するとStopIterationが発生する
# print(next(iterator)) # StopIterationエラー
このように、yield
文はジェネレータ関数内で値を生成するために使われます。
また、if
文と組み合わせることで、特定の条件下でのみ値を生成することも可能です。以下にその例を示します:
def count_up_to(n):
i = 1
while i <= n:
if i % 2 == 0: # iが偶数の場合のみ値を生成
yield i
i += 1
# ジェネレータ関数を呼び出してイテレータを取得
iterator = count_up_to(5)
# イテレータから値を逐次的に取得
print(next(iterator)) # 2
print(next(iterator)) # 4
# print(next(iterator)) # StopIterationエラー
このように、yield
文とif
文を組み合わせることで、特定の条件を満たす値のみを生成するジェネレータ関数を作成することができます。これにより、必要な値だけを効率的に生成し、メモリの使用量を節約することが可能になります。