Pythonのリスト内包表記について
作成: 2021-07-08
更新: 2021-07-08
リスト内包表記とは
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]
まとめ
リスト内包表記の書き方を調べてみました。
複雑なこともできますが可読性が落ちてしまうので、多用は避けたほうがよさそうですが、ちょっとリストの内容をいじりたいときなどに重宝しそうです。