【ヒント】Python: リストのリストを一行で平坦化

By khoanc, at: 2025年7月16日17:33

Estimated Reading Time: __READING_TIME__ minutes

[TIPS] Python: Flatten a List of Lists in One Line
[TIPS] Python: Flatten a List of Lists in One Line

PythonでPythonを扱う際、よくある状況があります。

 

リストのリストがあり、それを単一のリストにフラット化したい場合です。

 

問題

 

例を示します。

 

data = [[1, 2], [3, 4], [5, 6]]

 

期待される出力:

 

[1, 2, 3, 4, 5, 6]

 

シンプルな解決策:リスト内包表記

 

リストのリストをフラット化する最もPython的な方法は次のとおりです。

 

flattened = [item for sublist in data for item in sublist]

 

解説

 

これは入れ子になったリスト内包表記であり、機能的には次のものと等価です。

 

flattened = []
for sublist in data:
    for item in sublist:
        flattened.append(item)

 

しかし、はるかに簡潔な形式です。

 

代替案:itertools.chainの使用

 

より大きく、メモリを意識する必要があるデータセットの場合、Pythonの組み込みitertoolsモジュールを使用できます。

 

import itertools

flattened = list(itertools.chain.from_iterable(data))

 

このアプローチはイテレータを作成するため、大量のデータ処理を行う際に効率的です。

 

 

data = [['a', 'b'], ['c', 'd'], ['e']]
flattened = [item for sublist in data for item in sublist]
print(flattened)
# 出力: ['a', 'b', 'c', 'd', 'e']

 

ベストプラクティス

 

  • 小規模から中規模のデータセットを扱う場合は、明確で簡潔なコードのためにリスト内包表記を使用してください。
     

  • 大規模データまたはアイテムを遅延処理したい場合は、itertools.chainを使用してください。

 

このテクニックはクリーンなPython開発の定番であり、データ操作、Webスクレイピング、データパイプラインなどで広く使用されています。

 

参考:StackOverflowのトップ回答

 

Tag list:

Subscribe

Subscribe to our newsletter and never miss out lastest news.