Pythonのリストの内包表記について現役エンジニアが解説【初心者向け】

初心者向けにPythonのリストの内包表記について現役エンジニアが解説しています。内包表記とはリストを生成する方法の1つで、効率的な記述方法になります。条件を指定してリストを作成することが出来ます。Pythonの内包表記の書き方や使い方について解説します。

TechAcademyマガジンはオンラインのプログラミングスクールTechAcademy [テックアカデミー]が運営。初心者向けに解説した記事が4,000以上あります。現役エンジニアの方はこちらをご覧ください。

Pythonのリストの内包表記について、TechAcademyのメンター(現役エンジニア)が実際のコードを使用して、初心者向けに解説します。

Pythonについてそもそもよく分からないという方は、Pythonとは何なのか解説した記事を読むとさらに理解が深まります。

 

なお本記事は、TechAcademyのオンラインブートキャンプ、Python講座の内容をもとに紹介しています。

 

田島悠介

今回は、Pythonに関する内容だね!

大石ゆかり

どういう内容でしょうか?

田島悠介

Pythonのリストの内包表記について詳しく説明していくね!

大石ゆかり

お願いします!

 

目次

  1. 内包表記とは
  2. 内包表記の使い方
  3. 実際に書いてみよう
  4. まとめ

 

内包表記とは

内包表記とはリストを生成する方法の1つです。一見分かりづらいのですが、 Pythonの特徴を生かした効率的な記述方法として多く利用されています。

[PR] Pythonで挫折しない学習方法を動画で公開中

内包表記の使い方

内包表記の書き方は以下の通りです。

[式 for 変数 in シーケンスなど]

「シーケンスなど」の部分にはリストやタプル、列挙可能なオブジェクトが入ります。これらのことを総称してiterable(イテラブル)と呼びます。内包表記には条件も記述できます。

[式 for 変数 in シーケンスなど if 条件]

条件を記述した場合には、条件を満たした変数のみでリストが生成されます。リスト内包表記について、詳しくは公式サイトも参考にしてください。

Python docs – リスト内包表記

実際に書いてみよう

今回のサンプルプログラムでは、リスト内包表記の使い方について確認します。まずはリスト内包表記を使わずに、1から10の整数を要素にもつリストを作成してみましょう。

list1 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
print(list1)

実行結果は以下のとおりです。

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

連続した整数のリストを作成するにはrange()関数も多く使用されます。

list2 = list(range(1, 11))
print(list2)

実行結果は上記と同様です。

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

次に、同じことをリスト内包表記を使って行ってみましょう。

list3 = [i for i in range(1, 11)]
print(list3)

こちらも実行結果は上記と同様です。

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

これだけだと、リスト内包表記のありがたみが分かりづらいと思います。そこで1から10までの整数の2乗のリストを作成してみましょう。

list3 = [i**2 for i in range(1, 11)]
print(list3)

実行結果は以下のとおりです。このように式の部分を変えるだけで様々なリストを生成することができます。

[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

最後にif条件を使用して、1から20までの整数で2または3の倍数の値のリストを作成してみましょう。

list4 = [i for i in range(1, 21) if i % 2 == 0 or i % 3 == 0]
print(list4)

実行結果は以下のとおりです。if条件を組み合わせることで、より複雑なリストを生成することができました。

[2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20]

 

まとめ

今回の記事ではPythonのリストの内包表記について

監修してくれたメンター

太田和樹(おおたかずき)

ITベンチャー企業のPM兼エンジニア。

普段は主に、Web系アプリケーション開発のプロジェクトマネージャーとプログラミング講師を行っている。守備範囲はフロントエンド、モバイル、サーバサイド、データサイエンティストと幅広い。その幅広い知見を生かして、複数の領域を組み合わせた新しい提案をするのが得意。

開発実績:画像認識技術を活用した駐車場混雑状況把握(実証実験)、音声認識を活用したヘルプデスク支援システム、Pepperを遠隔操作するアプリの開発、大規模基幹系システムの開発・導入マネジメント。

地方在住。仕事のほとんどをリモートオフィスで行う。通勤で消耗する代わりに趣味のDIYや家庭菜園、家族との時間を楽しんでいる。

 

大石ゆかり

内容分かりやすくて良かったです!

田島悠介

ゆかりちゃんも分からないことがあったら質問してね!

大石ゆかり

分かりました。ありがとうございます!

 

TechAcademyでは、初心者でも最短4週間で、Pythonを使った人工知能(AI)や機械学習の基礎を習得できる、オンラインブートキャンプを開催しています。

また、現役エンジニアから学べる無料体験も実施しているので、ぜひ参加してみてください。