今回は、Pythonの基礎である内包表記を紹介します。
内包表記とはなにか、実際にPythonのコードを使用し、説明していきます。
Pythonの初学者にもわかりやすい内容になっていますので、ぜひ気軽に読んでいただければと思います。
レポートやプレゼンでちょうど良いサイズ のグラフを出力するための方法をわかりやすく解説していきます。
| 目的 | 講座名 | 到達点 | レベル/前提 | 想定時間 | こんな人に | 評価 |
|---|---|---|---|---|---|---|
| 現場志向でPython×DSを通しで習得 | 米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 | Python基礎〜NumPy/Pandas/ Matplotlib/Seaborn、 Docker+JupyterLabでの環境構築までハンズオン | 初心者〜初級(Mac推奨/軽いプログラミング経験があると◎) | 24時間 | Pythonの基礎固めは完了し、ステップアップをしたいかた | |
| 広く一式を“ブートキャンプ”形式で学ぶ | 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜 | 統計・Python(Numpy/Pandas)〜機械学習(scikit-learn/TensorFlow)・可視化・Tableauまで網羅 | 初心者OK | 26時間 | データサイエンスとは何をする職業なのか知りたいかた | |
| AI/機械学習の入門(Colab対応・数学やさしめ) | みんなのAI講座 ゼロからPythonで学ぶ人工知能と機械学習 【2025年最新版】 | Python基礎+機械学習の基本(文字認識・株価分析などの小プロジェクト)をColabで体験 | 超初心者〜初級(中学数学レベルで可) | 10時間 | 手を動かしてAIを学習したいかた |
内包表記とは
内包表記(comprehension)は、反復処理で作るリスト/集合/辞書を簡潔に一行で表現するPythonの文法です。
ただ、コードを簡潔に表現できる一方で、表現方法によっては可読性が悪くなることもあるので、注意して使用してください。
今回は、内包表記の代表的な3つの形式を紹介します。
- リスト内包表記
- 集合内包表記
- 辞書内包表記
リスト内包表記
まずは3つの表記の中で、一番使う機会の多いのがリスト内包表記です。
リスト内包表記は、リストに対する内包表記です。
リスト内包表記の構文は以下の通りです。
[式 for 変数 in イテラブル]
例)
[i**2 for i in range(1, 6)]
=> [1, 4, 9, 16, 25]
イテラブルとは、rangeなどのfor文でひとつずつ要素を取り出せる反復可能なオブジェクトです。
リスト内包表記のサンプルコードを紹介します。
違いがわかりやすいようにリスト内包表記を使用していない場合のコードも合わせて紹介します。
# リスト内包表記を使用しない場合
list1 = []
for i in range(10):
list1.append(i)
# リスト内包表記
list2 = [i for i in range(10)]
# 作成したリストの表示
print(list1)
print(list2)実行結果
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]リスト内包表記を使用していない場合とした場合で結果は同じことがわかります。
また、コードを確認すると、内包表記を使用しない場合は、3行でリストを記述しているが、内包表記を使用すると、1行でリストを記述しています。
このことからもリスト内包表記だとコードが簡潔になることがわかると思います。
集合内包表記
続いては、集合内包表記です。集合を作成するときにも内包表記で表現可能です。
リスト内包表記と似た形式ですが、集合内包表記は、’{}’中括弧を使用します。
{式 for 変数 in イテラブル}
例)
{x % 3 for x in range(10)}
=> {0, 1, 2}
集合は重複を持たないので、0~9の数字に対し、3で割ったときの余りを重複なしで、表現しています。
集合内包表記のサンプルコードを紹介します。
# 集合内包表記
s = {i for i in range(10)}
# 作成した集合型の表示
print(s)実行結果
{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}0から9までの数字が、集合型で定義されています。
辞書内包表記
辞書内包表記は、キーとなる式と値となる式を使用し、辞書型を作成する記述方法です。
辞書内包表記の構文は以下の通りです。
{キー式: 値式 for 変数 in イテラブル}
例)
meals = [“breakfast”,”lunch”,”dinner”]
foods = [“rice”,”ramen”,”sushi”]
[meal: food for meal, food zip(meals, foods)]
=> {“breakfast”:”rice”, “lunch”:”ramen”, “dinner”:”sushi”}
zip関数は、2つのリストを要素ごとにタプルで返してくれる関数です。
辞書内包表記のサンプルコードを紹介します。
# 辞書内包表記
fruits = ["apple", "banana", "cherry"]
idx_map = {i: f for i, f in enumerate(fruits)}
# 作成した辞書型を表示
print(idx_map)実行結果
{0: "apple", 1: "banana", 2: "cherry"}上記のようにenumerateを使用し、リストの要素番号(index)をキーにした辞書も簡単に作成可能です。
まとめ
内包表記は、コードを簡潔に効率よく記述する方法です。
代表的な内包表記とPythonの構文は以下通りです。
- リスト内包表記
[式 for 変数 in イテラブル] - 集合内包表記
{式 for 変数 in イテラブル} - 辞書内包表記
{キー式: 値式 for 変数 in イテラブル}
内包表記は、if文を用いて、フィルタすることも可能です。
まずは今回紹介した基本的な型を理解いただければと思います。


