6-4. Pythonのリスト内包表記


1. リスト内包表記とは?

リストを簡単に生成するための表記です。
forを使って、1行で書くことができるのが特徴です。


2. リスト内包表記の書き方

リスト内包表記は主に3つの書き方のパターンがあります。
1つずつ解説していきます。


2-1.リスト内包表記の基本的

  • [<式> for <変数> in <イテラブルオブジェクト>] :
    イテラブルオブジェクトの要素を変数に代入し、それらを式に当てはめた値で生成されるリスト

以下の例は、range関数で0~9までの連番を2倍した値のリストをリスト内包表記で作るコードです。
range関数についてはこちらのページで解説しています。
▶︎ Pythonのrange関数の解説ページ

x_list = [x * 2 for x in range(10)] 
print(x_list)
>> [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]


以下の例は、リストnamesに「さん」をつけたリストをリスト内包表記で作るコードです。

names = ['鈴木', '田中', '斎藤']
title_names = [x + 'さん' for x in names] 

print(title_names)
>> ['鈴木さん', '田中さん', '斎藤さん']


2-2. 条件を付与したリスト内包表記

  • [<式> for <変数> in <イテラブルオブジェクト> if <条件>]:
    イテラブルオブジェクトの要素を変数に代入し、それらの中で条件に当てはまる物だけを抽出し、式に当てはめた値で生成されるリスト

以下の例は、リストx_listの中で10以上の値を抽出し、2倍にしたリストを作成するコードです。

x_list = [0, 1, 10, 11]
y_list = [x * 2 for x in x_list if x >= 10]

print(y_list)
>> [20, 22]


2-3. 三項演算子を使ったリスト内包表記

  • [<真の時の値> if <条件> else <偽の時の値> for <変数> in <イテラブルオブジェクト>] :
    イテラブルオブブジェクトの要素を変数に代入し、三項演算子で条件分岐した値で生成されるリスト

三項演算子については、以下のページで解説しています。
▶︎ Pythonの三項演算子の解説ページ

以下の例は、リストx_listの中で、0より大きい値はそのままの値、そうでない場合は0の値であるリストを作成するコードです。

x_list = [-10, -1, 0, 1, 10, 11]
y_list = [x if x > 0 else 0 for x in x_list]

print(y_list)
>> [0, 0, 0, 1, 10, 11]


3. Python 公式ドキュメント


このエントリーをはてなブックマークに追加