Python: リスト内包表記とは、使い方

リスト内包表記とは

リスト内包表記とは、 リストの内容を元に、 新しいリストを作成するための特殊な表記方法です。
リスト内包表記はコンプリヘンション(comprehension)とも呼ばれ、 英単語の comprehension には「内包」や「包含」といった意味があります。

書式
[式 for 変数 in リスト if 条件]

リストをループさせる場合によく使う 「for 変数 in リスト」という表記の前後に、 「式」や「if 条件」が加わっています。 全体は [] 角括弧で括り、「if 条件」は省略可能です。

リスト内包表記の使い方

では実際にリスト内包表記を使ってみます。

リストの各要素を2倍にした新しいリストを作る

まずはすべてのリスト要素に対して2倍にした新しいリストを作成します。 「if 条件」はありません。

li = [1, 2, 3, 4]

# [式 for 変数 in リスト]
new_li = [n * 2 for n in li] 

print(new_li) # [2, 4, 6, 8]

「if 条件」付きで新しいリストを作る

次は、リストの値が偶数の時だけ2倍にした新しいリストを作成します。 「if 条件」の箇所に「偶数の場合」という条件が加わっています。

結果として要素が2つの新しいリストが作成されます。

li = [1, 2, 3, 4]

# [式 for 変数 in リスト if 条件]
new_li = [n * 2 for n in li if n % 2 == 0]

print(new_li) # [4, 8]

リスト内包表記を使わずに記述する

上で記述したコードを、 リスト内包表記を使わずに記述すると次のようになります。

li = [1, 2, 3, 4]
new_li = []

for n in li:
	if n % 2 == 0:
		new_li.append(n * 2)

print(new_li) # [4, 8]

リスト内包表記を普段使わない人でも、 他人のコードを読み解く際には必要となってきますので、 リスト内包表記はぜひおさえておいてください。

Python