[Python]リスト内包表記

基本的なリスト内包表記の形式と使用方法

Pythonのリスト内包表記(list comprehension)は、リストを生成する簡潔で効率的な方法です。基本的な形式は以下のようになります。

[expression for item in iterable]

ここで、iterableは繰り返し可能なオブジェクト(リストや範囲など)、itemは各反復で取り出される要素、そしてexpressionitemを使用して計算される新しいリストの各要素です。

例えば、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]

ここで、conditionitemに対するブーリアン条件です。この条件が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ループの順序とは逆です。