2020 年 3 月 のアーカイブ

Pythonの便利な構文-内包表記の紹介

2020 年 3 月 16 日 月曜日 by masy

今回はPythonの内包表記という構文を紹介します。

内包表記はリスト・辞書・集合等の生成を簡潔に記述するための構文で、
それぞれリスト内包表記・辞書内包表記・集合内包表記などと呼ばれます。
内包表記を上手に用いる事でコードの可読性を高める事ができます。

リスト内包表記

まずは内包表記を使用しない方法で、1~9の2乗の数値をリスト型で生成してみます。

data = []
for x in range(1, 10):
    data.append(x ** 2)

print(data)


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

これをリスト内包表記で書き直すと下記の通り簡潔に記述できます。

data = [x ** 2 for x in range(1, 10)]
print(data)

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

リスト内包表記にはif文を使う事もできます。
例えば、xが偶数の場合のみ取得対象とするには下記のように記述します。

data = [x ** 2 for x in range(1, 10) if x % 2 == 0]

その他の内包表記も使い方は同様なので、表記方法のみ紹介します。

辞書内包表記

{キー:値 for x in リスト等}

例)価格オブジェクトのリストから、価格IDと値の辞書を生成

{x.price_id: x.value for x in prices}

>>>
{'PRICE-0001': 100, 'PRICE-0002': 200, 'ITEM-0003': 300}

集合内包表記

{値 for x in リスト等}

例)契約オブジェクトのリストから、商品IDの集合を生成

{x.item_id for x in contracts}

>>>
{'ITEM-0001', 'ITEM-0002', 'ITEM-0004'}

ちなみに内包表記内のforやifは複数記述してネストさせる事も可能ですが、
可読性を損なうためそのような使い方はしないようにしましょう。
そのような場合は、内包表記を使わない方が可読性の高いコードになります。

これまで内包表記を知らなかったという方は、ぜひ上手に活用してみてください。