【Python】リスト内包表記を紹介!

こんにちは!

皆さんはリスト内包表記というものを知っていますか?

Pythonをしっかりと学習している方なら当たり前だと思いますが、初心者の方や、他言語しか触ったことがないといった方にはあまり馴染みのない言葉かもしれません。

最初は、リスト内包表記は読みづらく、使いたくないと感じる人が多いと思います。

ですが、リスト内包表記は、慣れたらとても使いやすですし、処理速度の面でも利点があるので、しっかりと学習して身につけていきましょう!

今回の記事では、リスト内包表記の以下の2つの使用法を紹介します。

  • 通常のリスト内包表記
  • if文を用いたリスト内包表記

リスト内包表記

では早速、リスト内包表記について見ていきましょう。

基本的な書式は以下のようになります。

[ 式 for 変数 in イテラブル]

これだけ見ても、初心者にはどう使えば良いかわかりませんね。

一般的に、リスト内包表記はリストを作成する際などに使用されます。

他のリストの作成方法も、以下の記事を参考に同時に押さえておきましょう。

参考記事

こんにちは! 皆さんは、様々な方法でリストを作成できることを知っていますか? 今回の記事では、リストの作成方法を複数紹介します。 紹介する作成方法は下記の4つです。 通常の作成方法要素を繰り返すリストの作成方法list[…]

リストの作り方

リスト内包表記を用いたサンプルプログラム

次に例を見ていきましょう。

以下のプログラムは、リスト内包表記を用いた、要素に0~9の数字を持つリスト生成するプログラムです。

list1 = [i for i in range(10)]
print(list1)

実行結果

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

リスト内包表記によって、range()の範囲の数字が格納されたリストが作成されます。

リスト内包表記を用いずに表したサンプルプログラム

先ほどののプログラムをリスト内包表記を用いずに表してみましょう。

次のプログラムは、リスト内包表記を用いずに、要素に0~9の数字を持つリスト生成するプログラムです。

list2 = []
for i in range(10):
    list2.append(i)
print(list2)

リスト内包表記を用いた場合には、2行で表せていたのですが、リスト内包表記を用いないと4行にもなってしまいました。

リスト内包表記を用いた方がかなりスッキリして見えますね!

先ほども述べましたが、リスト内包表記を用いた方が処理速度の面でも利点があります。

リスト内包表記に慣れるために、ちょっとしたリスト内包表記の応用についてみていきましょう。


if文を用いたリスト内包表記

リスト内包表記は、条件式を指定することもできます。

基本的な書式は以下のようになります。

[ 式 for 変数 in イテラブル if 条件式]

リスト内包表記を用いたサンプルプログラム

先ほどと同様に例を見ていきましょう。

以下のプログラムは、要素に0, 2, 4, 6, 8の数字を持つリストを生成するプログラムです。

list3 = [i for i in range(10) if i%2==0]
print(list3)

実行結果

[0, 2, 4, 6, 8]

ifの後の条件式によって、条件を指定することができました。

リスト内包表記を用いずに表したサンプルプログラム

上記のプログラムをリスト内包表記を用いずに表してみましょう。

list4 = []
for i in range(10):
    if i % 2 == 0:
        list4.append(i)
print(list4)

リスト内包表記を用いた場合には、変わらず2行で表せていたのですが、リスト内包表記を用いないと5行にもなってしまいましたね。

やはりリスト内包表記を用いた方が簡単ですね!

まとめ

今回は、リスト内包表記の使用法を紹介しました。

  • 通常のリスト内包表記
     →リスト内包表記を使用しない場合より処理速度高速
  • if文を用いたリスト内包表記
     →通常のリスト内包表記の後ろに条件を指定可能

皆さんはもう、リスト内包表記に出会った時に「なんだこの書き方・・・」などと思わずに、リスト内包表記に気づけるようになったのではないかと思います。

しっかりとリスト内包表記に慣れておきましょう!