【Python 基礎】内包表記でリストを一行で定義

  • URLをコピーしました!

今回は、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まで網羅初心者OK26時間データサイエンスとは何をする職業なのか知りたいかた
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文を用いて、フィルタすることも可能です。

まずは今回紹介した基本的な型を理解いただければと思います。

参考(おすすめ教材)

米国データサイエンティストがやさしく教えるデータサイエンスのためのPython講座 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜
よかったらシェアしてね!
  • URLをコピーしました!

この記事を書いた人

エンジニア。20代。組み込みエンジニアとして働き始めるも、働き方や業務内容に限界を感じ、 AI,Web3エンジニアを目指して勉強中。 エンジニアとして思うことや、学んだことを発信します。

目次