概要
よく忘れるのでメモ。
リストを flatten したい場合、便利なのが itertools.chain.from_iterable
を使うと簡単にフラット化できます。
サンプル
""" リストのサンプルです. リストの flatten について REFERENCES:: http://bit.ly/2L7yfq1 http://bit.ly/2Li2N8S """ import itertools from trypython.common.commoncls import SampleBase from trypython.common.commonfunc import pr class Sample(SampleBase): def exec(self): # サンプルデータ生成 nested = [(chr(x), chr(x + 1)) for x in range(65, 70)] pr('nested', nested) # itertools.chain を使って flatten flattened = list(itertools.chain.from_iterable(nested)) pr('flatten', flattened) # ついでに、並び順をキープしたままで重複削除 (python 3.7 以降で有効) dup_deleted = list(dict.fromkeys(flattened)) pr('dup_deleted', dup_deleted) def go(): obj = Sample() obj.exec() if __name__ == '__main__': go()
try-python/list02.py at master · devlights/try-python · GitHub
実行すると以下のようになります。
nested=[('A', 'B'), ('B', 'C'), ('C', 'D'), ('D', 'E'), ('E', 'F')] flatten=['A', 'B', 'B', 'C', 'C', 'D', 'D', 'E', 'E', 'F'] dup_deleted=['A', 'B', 'C', 'D', 'E', 'F']
最後の要素の順序キープしたままで重複削除は、以前にメモしていますので、よかったらどうぞ。
過去の記事については、以下のページからご参照下さい。
- いろいろ備忘録日記まとめ
サンプルコードは、以下の場所で公開しています。
- いろいろ備忘録日記サンプルソース置き場