Pythonのリスト内包表記(list comprehension)は、リストを生成する簡潔で効率的な方法です。基本的な形式は以下のようになります。
[expression for item in iterable]
ここで、iterable
は繰り返し可能なオブジェクト(リストや範囲など)、item
は各反復で取り出される要素、そしてexpression
はitem
を使用して計算される新しいリストの各要素です。
例えば、1から10までの数値の平方を要素とするリストを作成するには、次のようにします。
squares = [n**2 for n in range(1, 11)]
print(squares) # [1, 4, 9, 16, 25, 36, 49, 64, 81, 100]を表示
リスト内包表記には、新しいリストに含める要素をフィルタリングする条件を追加することができます。基本的な形式は以下のようになります。
[expression for item in iterable if condition]
ここで、condition
はitem
に対するブーリアン条件です。この条件がTrue
の場合のみ、item
は新しいリストに含まれます。
例えば、1から10までの数値のうち偶数の平方を要素とするリストを作成するには、次のようにします。
even_squares = [n**2 for n in range(1, 11) if n % 2 == 0]
print(even_squares) # [4, 16, 36, 64, 100]を表示
リスト内包表記は入れ子になることもあります。これは、各要素が自身もリストや他の反復可能なオブジェクトである複雑なデータ構造を平坦化(フラット化)するのに便利です。
例えば、2次元のリストから1次元のリストを作成するには、次のようにします。
nested_list = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
flat_list = [n for sublist in nested_list for n in sublist]
print(flat_list) # [1, 2, 3, 4, 5, 6, 7, 8, 9]を表示
この場合、内側のfor
ループが外側のループより先に来ることに注意してください。これは、通常のネストされたfor
ループの順序とは逆です。