NnmnLog

Pythonのリスト内包表記について

作成: 2021-07-08
更新: 2021-07-08
タグ: Python3

リスト内包表記とは

Pythonでリストを作る方法の一つで、以下のようにforループを使って以下のように書けます。

>>> odd_numbers = [2 * i + 1 for i in range(5)]
[1, 3, 5, 7, 9]

以下のように、<式><変数><イテレーター>の3つで構成されています。

inに指定された<イテレーター>の要素数だけ、<式>を繰り返し実行し、その結果を新しいリストにします。

<変数>には、各繰り返し処理における<イテレーター>の要素が入るので、<式>で参照できます。

[ <> for <変数> in <イテレータ> ]

内包表記によるリストの作成は、元のリストに影響を与えることなく、新規にリストを作成します。

>>> original_list = list(range(10))
>>> odd_numbers = [i for i in original_list if i % 2 != 0]
>>> print(original_list)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> print(odd_numbers)
[1, 3, 5, 7, 9]

リスト内包表記の使い方

すべての要素に対して処理をしたリストを作る

すべての要素に対して処理したリストを作るには、以下のように書きます。

>>> odd_numbers = [2 * i + 1 for i in range(5)]
[1, 3, 5, 7, 9]

条件によりリストをフィルターする

特定の条件に一致する要素のみ抽出したい場合などは、以下のようにif文を使うことで実現できます。

>>> [i for i in range(10) if i % 2 != 0]
[1, 3, 5, 7, 9]

まとめ

リスト内包表記の書き方を調べてみました。

複雑なこともできますが可読性が落ちてしまうので、多用は避けたほうがよさそうですが、ちょっとリストの内容をいじりたいときなどに重宝しそうです。