Pythonを使っていると、リストを操作するコードをよく書きますよね。そんなとき、「内包表記」というテクニックを使うと、コードが短く、読みやすくなります。
内包表記って何?
内包表記は、リストを作る処理を1行で書けるPythonの便利な機能です。たとえば、1から5までの数を2倍にしたリストを作りたい場合、普通のforループだとこんな感じになります:
numbers = []
for i in range(1, 6):
numbers.append(i * 2)
print(numbers) # [2, 4, 6, 8, 10]
でも、内包表記を使えばこうなります:
numbers = [i * 2 for i in range(1, 6)]
print(numbers) # [2, 4, 6, 8, 10]
同じ結果なのに、1行で済むんです!シンプルでしょ?
基本の形
内包表記の基本は [式 for 変数 in イテラブル if 条件]
です。
- 式:各要素にどんな操作をするか(ここでは i * 2)
- 変数:ループで使う変数(ここでは i)
- イテラブル:繰り返し可能なオブジェクト(ここでは range(1, 6))
- 条件を加えてみよう
「特定の条件を満たす要素だけ取り出したい」というときも、内包表記は強い味方です。たとえば、1から5までの数で偶数だけ2倍にしたい場合:
even_doubled = [i * 2 for i in range(1, 6) if i % 2 == 0]
print(even_doubled) # [4, 8]
if を後ろにつけると、条件に合うものだけがリストに入ります。
どんなときに使う?
内包表記は、リストを作るシンプルな処理にピッタリです。ただし、長すぎたり複雑すぎたりすると逆に読みづらくなるので要注意。こんなケースで活躍します:
- リストの要素を一括で変換したい(例:全部大文字にするとか、2倍にするとか)
- 簡単なフィルタリングをしたい(例:偶数だけ抜き出す)
注意点
読みやすさ優先:無理やり1行に詰め込むより、forループの方が分かりやすい場合もあります。
副作用は避ける:内包表記はリストを作るためのものなので、printとか別の処理を混ぜるのはNG。
まとめ
内包表記はPythonらしい「シンプルで効率的」なコードを書くための鍵。慣れると手放せなくなりますよ。たとえば、こんな風に文字列のリストを操作することも:
words = ["apple", "banana", "cherry"]
upper_words = [word.upper() for word in words]
print(upper_words) # ['APPLE', 'BANANA', 'CHERRY']
ぜひ普段のコードで試してみてください。