【Python】これで完璧!リスト内包表記の使い方を解説!サンプルコード付き

リスト内包表記とはすでに定義されているリストなどを使用し、新しいリストなどを短く、簡潔な方法で作成することができます。
つまり、スマートにコードを書くことができるということです。
その為、新しいリストを作成するときによく使われます。

今回はリスト内包表記についてサンプルコードを使って解説します。
また、普通にかコードを書いた場合とリスト内包表記した場合のコードで比較しています。

リスト内包表記とは

先ほども言いましたが、リスト内包表記とはすでに定義されているリストなどを使用し、新しいリストなどを短く、簡潔な方法で作成することができます。

正しく使用すれば非常に役立ちますが、注意しないと非常に読みにくくなりますので注意してください。

リスト内包表記の書き方

リスト内包表記の構文は下記になります。

iによってリストから要素を取り出し、iの処理によって新たなリストを作成します。

リスト内包表記のサンプルコード

出力結果

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

iによってリストからインデックスの要素を取り出し、iの処理によって2倍された新たなリストが作成されています。

if文を使ったリスト内包表記

if文を使った状態でもリスト内包表記することができます。

ifを使ったリスト内包表記の書き方

ifのリスト内包表記の構文は下記になります。

条件式がTrueとなるリストなどの要素のみ式で評価され、その結果が要素となる新たなリストが返されます。
条件式の中でも任意の変数名が使えます。

ifを使ったリスト内包表記のサンプルコード

ifを使ったリスト内包表記のサンプルコードをみてみましょう。

ifの例1

出力結果

[1, 3, 5, 7, 9, 11, 13]
[‘ライオン’]

numのリストの要素で2で割り切れない場合に要素としてその数値がリストに作成されます。
また、animalのリストの要素がライオンである場合に、要素として「ライオン」がリストに作成されます。

これをいつものように書くとこのようになります。

ifの例2

出力結果

[1, 3, 5, 7, 9, 11, 13]
[‘ライオン’]

if-elseを使ったリスト内包表記の書き方

if-elseのリスト内包表記の構文は下記になります。

if-elseを使ったリスト内包表記のサンプルコード

if-elseを使ったリスト内包表記のサンプルコードをみてみましょう。

if-elseの例

出力結果

[0, ‘奇数である’, 2, ‘奇数である’, 4, ‘奇数である’, 6, ‘奇数である’, 8, ‘奇数である’, 10, ‘奇数である’, 12, ‘奇数である’, 14]
[‘ゴリラ’, ‘その他’, ‘その他’, ‘その他’]

これをいつものif-elseで書くとこのようになります。

if-elseの例2

出力結果

[‘奇数である’, 1, ‘奇数である’, 3, ‘奇数である’, 5, ‘奇数である’, 7, ‘奇数である’, 9, ‘奇数である’, 11, ‘奇数である’, 13, ‘奇数である’]
[‘ゴリラ’, ‘他の動物’, ‘他の動物’, ‘他の動物’]

比較するとコードの量が圧倒的に違います。

ネストのリスト内包表記

スト内包表記は、ネストの場合でも書くことができます。

ネストのリスト内包表記の書き方

ネストのリスト内包表記の構文は下記になります。

リスト内包表記のネストのサンプルード

ネストの例1

出力結果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

これをfor文のネストで書くとこのようになります。

ネストの例2

出力結果

[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]

for文のネストではインデントをずらして書かなければなりませんが、リスト内包表記では1行で書くことができています。

集合演算の内包表記

リスト内包表記の括弧を{}(波括弧)に変更することで、集合型のリストが作成されます。

集合演算の内包表記の書き方

集合演算のリスト内包表記の構文は下記になります。

集合演算の内包表記のサンプルコード

出力結果

{0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 22, 24, 26, 28}
{‘ぞう’, ‘キリン’, ‘ゴリラ’, ‘ライオン’}

それぞれ、集合型のリストがリスト内包表記で作成されました。

辞書型の内包表記

リスト内包表記の括弧を{}(波括弧)に変更することで、辞書型のリストが作成されます。

辞書型の内包表記の書き方

辞書型のリスト内包表記の構文は下記になります。

辞書型の内包表記のサンプルード

出力結果

{‘ゴリラ’: 3, ‘ライオン’: 4, ‘ぞう’: 2, ‘キリン’: 3, ‘キングコング’: 6}

それぞれ、辞書型のリストがリスト内包表記で作成されました。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し