他の言語で言うところのflatMapだとかflattenする方法。
複数のイテレータなどから連続した要素を得る場合の方法
itertools.chainで複数のiterableなオブジェクトを連結
import itertools
r1 = range(0, 3)
r2 = range(3, 6)
stream = (r1, r2)
print(stream)
flat = itertools.chain(r1, r2)
for n in flat:
print(n)
実行結果
(range(0, 3), range(3, 6))
0
1
2
3
4
5
chainの場合は複数のiterableなオブジェクトを列挙して指定するが、すでにそれがiterableなコンテナに入っている場合は、
itertools.chain.from_iterable
が使用可能。
stream = (r1, r2)
for n in itertools.chain.from_iterable(stream)
print(n)
参考
10.1. itertools — 効率的なループ実行のためのイテレータ生成関数