Pythonでは、2つのジェネレータを結合するためのいくつかの方法があります。ここでは、その中でも一般的に使用される2つの方法を紹介します。
方法1: itertools.chain
itertools.chain
関数は、複数のジェネレータを一つに結合します。以下にその使用例を示します。
import itertools
gen1 = (x for x in range(5))
gen2 = (x for x in range(5, 10))
for i in itertools.chain(gen1, gen2):
print(i)
このコードは、0から9までの数字を順に出力します。
方法2: yield from
Python 3.3以降では、yield from
文を使用して、一つのジェネレータから別のジェネレータへ制御を委譲することができます。以下にその使用例を示します。
def chain_generators(gen1, gen2):
yield from gen1
yield from gen2
gen1 = (x for x in range(5))
gen2 = (x for x in range(5, 10))
for i in chain_generators(gen1, gen2):
print(i)
このコードも、0から9までの数字を順に出力します。
これらの方法を使えば、Pythonで2つのジェネレータを簡単に結合することができます。