Pythonの内包表記を使ってリスト(list)や辞書(dict)を初期化する方法
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文も書けるので工夫次第で見やすいソースコードを作ることができます。
リンク