【Python】リスト内包表記のif文でelseを使用する方法

2023.01.04 /

【Python】リスト内包表記のif文でelseを使用する方法

記事ではPythonにおける、リスト内包表記if文でelseを使用する方法について解説していきます。

リスト内包表記は既存のリストから新しいリストを生成する手法であり、if文を組み合わせることでより柔軟にリストを生成することができます。

しかしif文を組み合わせたリスト内包表記でelseを使用したい場合、記入方法がif文だけの場合と異なるのです。

本記事を通して、リスト内包表記でifとelseを使用する方法について理解を深めてください。

リスト内包表記

リストとは

Pythonで利用できるデータ型の一つにリストがあります。リストは複数の値を順番に格納できるデータ型です。

リストには次のような特徴があります。

リストの特徴
  • 複数の値を順番に格納する
  • 各要素にはインデックス番号が振られる
  • インデックス番号は0から始まる
  • イミュータブル(変更可能)なため、好きな箇所に要素を追加・削除ができる
  • 格納する要素は型が異なっても可

リストについてより詳しくは以下記事をご参照ください。

リスト内包表記とは

リスト内包表記とは既存のリストから新しいリストを生成する手法であり、リスト内包表記を使うことでコードを簡潔に記述できるようになります。

構文

[式 for 仮変数 in リスト]

リスト内包表記についてより詳しくは以下記事をご参照ください。

リスト内包表記でif文を使用する方法

リスト内包表記でif文を使用する場合、以下の構文に従って記入します。

構文

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

if文の条件式がTrueの場合のみ、要素の値が式に代入され、リストに結果が追加されます。

if文を組み合わせることで、リスト内から指定した条件を満たす要素だけを抽出することができます。

例えば既存のリストから、偶数の値のみを格納したリストを生成するには次のように記述します。

>>> lists = [5, 4, 54]
>>> lists2 = [i for i in lists if i % 2 == 0]
>>> lists2
[4, 54]

if文を使用したリスト内包表記にelseを利用する方法

リスト内包表記でifとelseを利用する場合は、以下構文に従って記入します。

構文

[式 if 条件式 else 条件式を満たさなかったときの処理 for 仮変数 in リスト]

if文の条件式がFalseの場合、elseで指定した処理の値を式に代入し、新しく生成するリストに結果を追加します。

elseを使用する際の注意事項として、if文だけの場合は末尾にif文を記入しますが、elseも使用する場合は式の後ろにifとelseを記入します。

以下コードはリスト内に奇数があった場合、奇数という文字列に変換します。

>>> list1 = [5, 4, 54]
>>> list2 = [i if I % 2 == 0 else "奇数" for i in list1]
>>> list2
['奇数', 4, 54]

range関数を利用することも多いです。

>>> lists = [i if i % 2 == 0 else "奇数" for i in range(10)]
>>> lists
[0, '奇数', 2, '奇数', 4, '奇数', 6, '奇数', 8, '奇数']

まとめ

本記事「【Python】リスト内包表記のif文でelseを使用する方法」はいかがでしたか。

ぜひリスト内包表記にifやelseを利用して、読みやすく簡潔なコードを記入できるようになってください。