A bolt out of the blue

競プロ、その他勉強したことなど

Pythonでflatten

リストを連結して一つにすることをflattenという。 例えばこんなことだ:

[[3, 1, 4], [1, 5], [9], [2, 6, 5]] --> [3, 1, 4, 1, 5, 9, 2, 6, 5]

Pythonの標準ライブラリのitertoolsには似たようなことのできるchainという関数がある。

In [1]: from itertools import chain
In [2]: list(chain([1,2,3], [4,5], [6,7,8]))
Out[2]: [1, 2, 3, 4, 5, 6, 7, 8]

*でunpackすればflattenらしく使える。

In [3]: x = [[1,2,3], [4,5], [6,7,8]]
In [4]: list(chain(*x))
Out[4]: [1, 2, 3, 4, 5, 6, 7, 8]