【python】listをflatten(listの入れ子構造を除去)する方法
pythonのlistをflattenしたい人
「pythonのlistをflattenするにはどうしたらいいでしょうか?こんな感じの変換をしたいです↓
[1,[2,[3,[4,5]]]] → [1,2,3,4,5]
[1,[2,3],[[4]],5] → [1,2,3,4,5]
具体的な使用例としてコピペできるソースコードも欲しいです」
こんな疑問を解決します。
この記事を書いている私はIT業界歴12年、年収1,000万円ちょっとの金融系エンジニアです。学生時代から様々なプログラミング言語を扱ってきましたが、その中でもpythonはとても扱いやすく生産性も高く、オススメの言語です。
本記事では、pythonでlist構造をflatten(listの入れ子構造を除去)する方法を解説します。具体例を示し、細かい構文に迷ったときにコピー&ペーストして使えることも目指しました。少しでもお役に立てますと幸いです。
flattenとは
flattenとは、入れ子になっているlistのlistを単純なlistにすることです。
pythonには標準のflatten関数が無いので実装例を示します
flatten関数の実装例
collectionsライブラリからIterableを使って実装します。まずはライブラリからIterableをimportしておきます。
from collections import Iterable
flatten関数のプログラムコードは以下の通りです。
from collections import Iterable def flatten(l): for el in l: if isinstance(el, Iterable) and not isinstance(el, basestring): for sub in flatten(el): yield sub else: yield el
以下のサイトを参考にしました。
参考: stack overflow(外部サイト):Flatten an irregular list of lists
flatten関数の実行例
実行結果は以下の通りです。
>>> list(flatten([1,[2,[3,[4,5]]]])) [1, 2, 3, 4, 5] >>> list(flatten([1,[2,3],[[4]],5])) [1, 2, 3, 4, 5] >>> list(flatten([['cookie',['chocolate']],[['ice cream']],[]])) ['cookie', 'chocolate', 'ice cream']
今回は以上です。pythonでlistの入れ子構造をflattenする方法を解説しました。本記事の内容がプログラミングする際の参考になりましたら幸いです。
pythonエンジニア向け転職情報
|python利用企業ランキング2020
|python利用企業ランキング2020
pythonのプログラミングスキルを持つエンジニアの方が優良企業を選ぶことができるよう、ランキング形式でpython求人の募集企業を紹介します。
Pythonエンジニア求人の特徴
Pythonエンジニア|求人企業ランキング
当ランキング利用上の注意点
Pythonエンジニア求人の特徴
Pythonエンジニア|求人企業ランキング
当ランキング利用上の注意点
「今の会社を辞めて転職します。エンジニア職に強みのあるおすすめの転職サイト・転職エージェントを教えて欲しい。また好条件で転職するにはどうすれば良いですか?」こんな悩みに答えます。
ITエンジニアに強いおすすめの転職サイト・転職エージェント3選
転職成功には強くてニューゲームが条件。どうやって実現する?