Pythonのリスト内包表記(List Comprehension)とは?
リスト内包表記(List Comprehension)は、リストを簡潔に生成するためのPythonの文法です。
通常の for
文よりも短く、読みやすく高速なコードが書けるのが特徴です。
基本構文
[式 for 変数 in シーケンス]
例:1〜5の2乗をリストにする
squares = [x**2 for x in range(1, 6)]
print(squares) # → [1, 4, 9, 16, 25]
通常のfor文との比較
# 通常のfor文
squares = []
for x in range(1, 6):
squares.append(x**2)
# リスト内包表記
squares = [x**2 for x in range(1, 6)]
同じ結果を、よりコンパクトに書けるのが内包表記の利点です。
条件付きリスト内包表記
even = [x for x in range(10) if x % 2 == 0]
print(even) # → [0, 2, 4, 6, 8]
if
を使えば、条件に合う要素だけを抽出することができます。
if-else を使う内包表記
labels = ["偶数" if x % 2 == 0 else "奇数" for x in range(5)]
print(labels) # → ['偶数', '奇数', '偶数', '奇数', '偶数']
if-else
を式の前に書くことで、各要素を条件に応じて変換できます。
二重ループ(ネスト)も可能
pairs = [(x, y) for x in [1, 2] for y in [3, 4]]
print(pairs) # → [(1, 3), (1, 4), (2, 3), (2, 4)]
ネストしたループも 1行で書けるため、リストの組み合わせ処理にも便利です。
使いどころ
- リストの変換(例:文字列を整数に)
- フィルタリング(条件に合う要素の抽出)
- 要素の生成(数列、組み合わせなど)
注意点
- 複雑すぎると読みにくくなる
- 可読性を優先して、必要なら通常のfor文を使うのもOK
まとめ
リスト内包表記(List Comprehension)は、Pythonらしい簡潔で効率的なコードを書くための便利な構文です。
慣れれば、コード量を減らしつつ読みやすさや実行速度も向上します。
まずは基本形から、条件付きやif-else付き、ネストまで順に使ってみましょう!