ひろこま Hack Log

プログラミングや機械学習などの知識を記録・共有します

PythonでFlatten

f:id:twx:20190722145422p:plain
PythonでFlatten

Flattenとは

「入れ子になっているリスト」を「入れ子になっていないリスト」にすることです。

こんな感じです。

[1,[2,3]]  → [1,2,3]

[1,[2,[3]]] → [1,2,3]

[1,[2,{'foo': 3}]] → [1,2,{'foo':3}]

[1,[2,'foo']] → [1,2,'foo']

PythonでFlatten

ほい。

flatten.py

def flatten(xs):
    result = []
    for x in xs:
        if isinstance(x, collections.Iterable) and not isinstance(x, dict)and not isinstance(x, str):
            result.extend(flatten(x))
        else:
            result.append(x)
    return result

テストしてみます。

>>> from flatten import flatten as f
>>> f([1,[2,3]])
[1, 2, 3]
>>> f([1,[2,[3]]])
[1, 2, 3]
>>> f([1,[2,{'foo':3}]])
[1, 2, {'foo': 3}]
>>> f([1,[2,'foo']])
[1, 2, 'foo']

できました!!

本日は「PythonでFlatten」をご紹介しました。良い記事だと思っていただいた方は、以下の「★+」ボタンのクリック、SNSでのシェア、「読者になる」ボタンのクリックをお願いします。 それではまたー!

Koma Hirokazu 's Hacklog ―― Copyright © 2018 Koma Hirokazu