Pythonの内包表記を使ってリスト(list)や辞書(dict)を初期化する方法

2021/01/19PythonPythonの基本

記事内に広告が含まれています。

Pythonではリスト(list)や辞書(dict)をシンプルに作成する方法として内包表記が用意されています。

内包表記を用いると、複数行の記述を要する処理や大量の初期化を伴うデータの生成を1行で書けてしまう場合があり便利な表現方法です。

Pythonの内包表記とは

Pythonの内包表記は複雑なもしくは大量のデータを持つリスト(list)や辞書(dict)の初期化を1行のfor文で済ませてしまえる書き方です。

Pythonの内包表記方法

Pythonの内包表記は以下のように行います。

<list> or <dict> = [<式> for <変数> in <反復可能オブジェクト>]

リスト(list)の内包表記

リスト(list)の内包表記は以下のようになります。

#リスト(list)
list_data = [ i for i in range( 10 )]
print( type( list_data ))
print( list_data )

上記のコードを実行すると

<class 'list'>
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

となり、for文の条件数分、リスト(list)が初期化されます。

辞書(dict)の内包表記

辞書(dict)の内包表記は以下のようになります。

#辞書(dict)
dict_data = { chr( ord( "A" ) + i )  : i for i in range( 10 )}
print( type( dict_data ))
print( dict_data )

上記のコードを実行すると

<class 'dict'>
{'A': 0, 'B': 1, 'C': 2, 'D': 3, 'E': 4, 'F': 5, 'G': 6, 'H': 7, 'I': 8, 'J': 9}

となり、for文の条件数分、辞書(dict)が初期化されます。

内包表記のif文

内包表記にはif文を書くことができます。

#内包表記のif文
dict_data = { chr( ord( "A" ) + i )  : i for i in range( 10 ) if i % 2 == 1}
print( type( dict_data ))
print( dict_data )

上記のコードを実行すると

<class 'dict'>
{'B': 1, 'D': 3, 'F': 5, 'H': 7, 'J': 9}

となり、1つ飛ばしで辞書(dict)が初期化されていることがわかります。

まとめ

Pythonの内包表記はリスト(list)や辞書(dict)を初期化するのに複数行の記述を要したり、大量の初期化を伴うデータの生成を1行で書けてしまう場合があり便利な表現方法です。

if文も書けるので工夫次第で見やすいソースコードを作ることができます。

システムトラストでは一緒に働いていただける仲間を募集中です。
株式会社システムトラスト

システムトラストでは、システムエンジニア、プログラマーなどを随時募集中です。気軽にご相談ください。

お問合せ