Python入門【内包表記の使い方】

こんにちは、ミナトです。

Pythonには、内包表記という記述方法があります。

内包表記を利用することでfor文やwhile文を利用せずに一行で繰り返し処理を記述できます。

シンプルな処理であれば、内包表記を利用することで、スマートに記述できコードの見通しがよくなります。

今回は、Pythonの内包表記について紹介します。

今回は一行でループ処理を記述できる内包表記について紹介するで😆
以下のような方を対象としています
  • Pythonの内包表記の使い方を知りたい
  • コード量を減らして見通しの良いコードを書きたい
  • Pythonでプログラミングを学びたい

内包表記の使い方

内包表記とは?

内包表記は、シンプルなループ処理を一行でかける記述方法のことです。

内包表記には以下のような特徴があります。

内包表記の特徴
  • シンプルなループ処理が一行で記述でき、コード量が減り、見通しがよくなる
  • for文で記述するより実行速度が早くなる

また、内包表記には大きく3種類の内包表記があります。

内包表記の種類
  • リスト内包表記
  • ディクショナリ内包表記
  • set内包表記

リスト内包表記

まずは、リスト内包表記から紹介します。

リスト内包表記の書き方
[式 for 繰り返し変数 in リスト (if 条件式)]

例えば、ループ処理でリストの中の値を全て2倍する処理を例に説明します。
通常のfor文では以下のように記述できます。

# for文の場合
l1 = [1, 2, 3, 4, 5]

l2 = []
for i in l1:
    l2.append(i * 2)

print(l2)

## 出力
[2, 4, 6, 8, 10]

上記の処理をリスト内包表記を利用して記述すると以下のように記述できます。
for文の箇所が一行となりスッキリと見やすくなることが確認いただけると思います。

# リスト内包表示の場合
l1 = [1, 2, 3, 4, 5]

l2 = [i * 2 for i in l1]

print(l2)

## 出力
[2, 4, 6, 8, 10]

内包表記でif文を利用する

内包表記の中ではif文が利用できます。
以下の例では偶数の場合、値をリストに追加する処理を実装しています。

まずがfor文の例を確認してみます。

# for文の場合
l1 = [1, 2, 3, 4, 5]

l2 = []
for i in l1:
    if i % 2 == 0:
        l2.append(i)

print(l2)

## 出力
[2, 4]

上記の処理をリスト内包表記を利用して記述すると以下のように記述できます。

l1 = [1, 2, 3, 4, 5]

l2 = [i for i in l1 if i % 2 == 0]

print(l2)

## 出力
[2, 4]

ディクショナリ内包表記

続いてディクショナリ(辞書の)内包表記について説明します。
基本的な使い方はリスト内包表記と同じです。

ディクショナリ内包表記の書き方

{キー: 値 for 繰り返し変数 in ディクショナリ (if 条件式)}

以下の例では内包表記を用いてディクショナリのキーと値を入れ替えています。

d = {'a': 'Apple', 'b': 'Google', 'c': 'Amazon'}

d2 = {y: x for x, y in d.items()}

print(d2)

## 出力
{'Apple': 'a', 'Google': 'b', 'Amazon': 'c'}

集合(set)内包表記

続いて集合(set)内包表記について説明します。
基本的な使い方はリスト内包表記と同じです。

集合内包表記の書き方

{式 for 繰り返し変数 in 集合(set) (if 条件式)}

l1 = [1, 2, 2, 3, 3, 4, 5]

s1 = {i for i in l1}

print(s1)

## 出力
{1, 2, 3, 4, 5}

まとめ

内包表記を利用することでfor文やwhile文を利用せずに一行で繰り返し処理を記述できます。
内包表記の特徴は以下の通りです。

内包表記の特徴
  • シンプルなループ処理が一行で記述でき、コード量が減り、見通しがよくなる
  • for文で記述するより実行速度が早くなる
  • リスト内包表記、ディクショナリ内包表記、set内包表記の3種類がある

最後まで読んでいただき、ありがとうございます。

この記事が、「面白いな」、「勉強になったな」という方は、ぜひ、SNSでシェアしていただけると嬉しいです。