リスト内包表記

Pythonの**リスト内包表記(List Comprehension)**とは、既存のリストや反復可能オブジェクトから新しいリストを簡潔に生成するための構文です。forループや条件分岐を1行で書けるため、コードが読みやすく効率的になります。


基本構文

python
[式 for 変数 in 反復可能オブジェクト]

python
numbers = [1, 2, 3, 4, 5] squares = [n * n for n in numbers] print(squares) # 出力: [1, 4, 9, 16, 25]

このコードは、元のリスト numbers の各要素を2乗して、新しいリスト squares を生成しています。


条件付き内包表記

if句を加えて条件付きで要素を取り出すことも可能です

python
even_numbers = [n for n in numbers if n % 2 == 0] print(even_numbers) # 出力: [2, 4]

この場合、numbers から偶数だけを抽出しています。


if-elseを使った内包表記(条件演算子)

各要素に対して条件分岐した値を設定することも可能です

python
labels = ["even" if n % 2 == 0 else "odd" for n in numbers] print(labels) # 出力: ['odd', 'even', 'odd', 'even', 'odd']

ネストしたループ(入れ子のfor文)

python
pairs = [(x, y) for x in [1, 2, 3] for y in [4, 5]] print(pairs) # 出力: [(1, 4), (1, 5), (2, 4), (2, 5), (3, 4), (3, 5)]

複数のループを組み合わせて、組み合わせのリストを生成できます。


リスト内包表記の利点

  • コードが短く、読みやすくなる

  • パフォーマンスがforループより高速な場合がある(特に大量データに対して)


注意点

  • 複雑なロジックは可読性が下がるため、通常のforループの方が適する場合もあります。

  • ネストが深いと読みにくくなるため、適切な使いどころを判断することが重要です。

生成日:2025/05/03