サイトアイコン Python Snippets

pythonでのflatmap(flattenする)

他の言語で言うところの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 — 効率的なループ実行のためのイテレータ生成関数

関連記事:

モバイルバージョンを終了