python list内包表記でifを用いた要素の抽出
pythonのlist内包表記においてif文を使用することによって、元のリストやイテラブルオブジェクトから特定の条件を満たす要素だけを効率的に抽出し、新しいリストを作成できます。基本的な構文は `[式 for 要素 in イテラブル if 条件式]` となり、この形式では `for` ループで要素を一つずつ取り出し、`if` 文の条件式が真(True)と評価された要素に対してのみ、指定された式を適用した結果が新しいリストに追加されます。
【サンプルコード】
# 0から9までの数値の中から偶数だけを抽出するlist内包表記
even_numbers = [num for num in range(10) if num % 2 == 0]
print(even_numbers)
# 文字列のリストから長さが3文字より大きいものだけを抽出するlist内包表記
words = ["apple", "banana", "cherry", "date", "fig"]
long_words = [word for word in words if len(word) > 3]
print(long_words)
【実行結果】
[0, 2, 4, 6, 8]
['apple', 'banana', 'cherry', 'date']
最初のサンプルコードでは、range(10) によって生成される0から9までの整数を順番に num という変数に取り出し、if num % 2 == 0 という条件式でその数値が偶数かどうかを判定しています。条件が真の場合、つまり num が偶数のときだけ、その num が新しいリスト even_numbers の要素として追加されるため、結果として偶数のみが含まれるリストが得られます。
二つ目のサンプルコードでは、文字列のリスト words から各要素 word を取り出し、if len(word) > 3 という条件式で文字列の長さが3文字より大きいかどうかを確認しています。この条件を満たす文字列('apple', 'banana', 'cherry', 'date')だけが新しいリスト long_words に含まれることになり、従来の `for` ループと `if` 文を組み合わせた処理よりも簡潔に記述できる点がlist内包表記の利点です。
python リスト内包表記のif elseによる条件別処理
pythonのリスト内包表記では、`if` だけではなく `if else` を用いることによって、条件に応じて異なる値をリストの要素として追加する処理を一行で記述できます。この場合の構文は `[真の場合の式 if 条件式 else 偽の場合の式 for 要素 in イテラブル]` となり、`if` のみの構文とは異なり `if else` の部分が `for` ループよりも前に記述される点に注意が必要です。
【サンプルコード】
# 0から9までの数値について、偶数ならそのまま、奇数なら 'odd' という文字列にするlist内包表記
number_labels = [num if num % 2 == 0 else 'odd' for num in range(10)]
print(number_labels)
# 点数リストについて、60点以上なら 'Pass'、未満なら 'Fail' とするlist内包表記
scores = [85, 55, 92, 48, 70]
results = ['Pass' if score >= 60 else 'Fail' for score in scores]
print(results)
【実行結果】
[0, 'odd', 2, 'odd', 4, 'odd', 6, 'odd', 8, 'odd']
['Pass', 'Fail', 'Pass', 'Fail', 'Pass']
最初のサンプルコード `number_labels` の生成では、`range(10)` から取り出した各数値 num に対して、`if num % 2 == 0` が真であれば num そのものを、偽であれば(つまり奇数であれば)文字列 `'odd'` をリストの要素としています。このように、`if else` を使うリスト内包表記は、元のイテラブルの全ての要素に対して何らかの処理を行い、その結果を新しいリストに含めたい場合に有効です。
二つ目のサンプルコード `results` の生成では、scores リスト内の各点数 score を評価し、if score >= 60 が真であれば `'Pass'` を、偽であれば `'Fail'` を新しいリストの要素としています。`if` のみの構文が条件に合わない要素を除外するフィルタリングの役割を果たすのに対し、`if else` を用いる構文は条件に基づいて要素の値を変換するマッピングの役割を果たすという違いがあります。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
Gitでブランチ(branch)を作成する方法
crontabの書き方
PDFをExcelに変換する方法
Excelでプルダウンを設定する方法
エクセルでページ区切りを設定する方法
Markdownの取り消し線の書き方
ラズベリーパイでできること9選
Gitでbranch(ブランチ)を削除する方法をローカル・リモート別に解説
git addの取り消し方法を状況別に解説
CSSのstickyプロパティでWebサイトに固定要素を実装する方法
ITやプログラミングに関するニュース
アイアール技術者教育研究所がエクセルギー解析計算ウェビナーを開催、省エネと環境負荷低減に貢献
フラー株式会社がアプリ市場トレンド解説ウェビナーを3月25日に開催、成長アプリの共通項とデータ活用を解説
株式会社BOTANICOが2026年版X運用最新戦略ウェビナーを開催、成果につなげる資産型運用を解説
AIストーム株式会社がOpenClaw活用セミナーを開催、AIエージェントがビジネス現場を変革
株式会社オロが建設コンサルティング業向けウェビナーを開催、技術部門の損益可視化を支援
アルティウスリンク株式会社が経理向けBPO活用ウェビナーを開催、課題解決と業務効率化を支援
株式会社日本計画研究所がAI時代のインフラセミナー開催、GPUとデータセンターの課題を解説
株式会社カウンターワークスがリーシング業務AI活用ウェビナー開催、既存ツールでAIエージェント実践
株式会社セキドがDJI産業機セミナーを福井で開催、3Dデータ活用と機材選定を無料解説
株式会社ナビットが補助金活用ウェビナーを開催、販促費削減と集客力向上を解説
