Pythonリスト内包表記

リストに対するfor処理を一行で記載する、リスト内包表記の書き方を説明します。


書き方

[式 for 変数 in リストなど]

「リストなど」と書かれている部分は、通常のfor文と同じように、タプルやrange()、zip()やenumerate()なども使えます。通常のfor文との書き方との対応例は以下のとおりです。

# リスト内包表記
x_list = [x*0.1 for x in range(10)]

# 通常のfor文
x_list = []
for x in range(10):
    x_list.append(x*0.1)

書き方 (ネスト)

また、for文をネストして書くこともできます。

[式 for 変数 in リストなど for 変数 in リストなど]

通常のfor文で書くパターンとの対応例は以下の通りです。

# リスト内包表記
x_list = [x*y for x in range(5) for y in range(2)]

# 通常のfor文
x_list = []
for x in range(5):
    for y in range(2):
        x_list.append(x*y)

書き方 (三項演算子と組み合わせ)

リスト内包表記に三項演算子で条件分岐させることもできます。

[真の場合の値  if 条件式 else 偽の場合の値 for 変数 in リストなど]

実例は以下のとおりです。

[ x if x >= 5 else x + 100 for  x in range(10)]
>> [100, 101, 102, 103, 104, 5, 6, 7, 8, 9]

メリット・デメリット

通常のfor文で書くより、短いコード量でスッキリ記載することができます。ネストしすぎたり、複雑になる場合は、逆に可読性が低くなることに注意が必要です。


関連記事