← トップ
3 / 10

3. リスト内包表記(list comprehension)

CONCEPT

for ループでリストを作る処理を、1行で書ける書き方です。リスト内包表記list comprehension(リスト内包表記)。1行でリストを生成する書き方は「リストの中に計算を詰め込む」というイメージです。

📍 使い道: 商品リストから「価格>1000円」だけを新しいリストに抽出
COMMON MISTAKES — よくある間違い
複雑な内包表記を書きすぎるif や for が3つ以上続く内包表記は読みにくい。普通の for ループに分けましょう。
内包表記で副作用を使う[print(x) for x in list] は動きますが、None のリストができます。内包表記は値を作るために使いましょう。
コードを1行ずつ実行してみよう
example.pyPython
1scores = [45, 80, 30, 90, 55]# scores に点数のリストを入れる
2passed = [s for s in scores if s >= 60]# 60点以上だけを集める → [80, 90]
3print(passed)# passed を表示 → [80, 90]
« 次の行 » ボタンを押して実行を開始
VARIABLES
実行すると変数の状態が表示されます
リスト内包表記は「リストを1行で作る」書き方です。 [x*2 for x in range(5)] で [0, 2, 4, 6, 8] が作れます。 for文で書くより短く書けますが、まずはfor文を理解してからでOKです。
📚 読み方ガイド
コード読み方
[x for x in list]そのままコピー
[f(x) for x in list]関数を適用
[x for x in list if x > 0]条件で絞る
[int(s) for s in str_list]型変換
KEY POINT

リスト内包表記list comprehension(リスト内包表記)。1行でリストを生成する書き方では[ ] の中に書くと結果はリストになる。左側に「各要素をどうするか」、真ん中に for 変数 in 元のリスト、右側に if 条件 をつけると絞り込みができる。読む順序: forif → 左側の式

確認問題
1次のリスト内包表記の結果は?
result = [x + 1 for x in [1, 2, 3]]
[2, 3, 4] です。1+1=2, 2+1=3, 3+1=4 と各要素に1を足した新しいresultリザルト — 結果リストができます。
2次のコードと同じリスト内包表記は?
result = [] for word in ["cat", "dog", "bird"]: result.append(len(word))
result = [len(word) for word in ["cat", "dog", "bird"]] です。resultリザルト — 結果は [3, 3, 4] になります。
3次の結果は?
nums = [1, 2, 3, 4, 5, 6] even = [n for n in nums if n % 2 == 0]
[2, 4, 6] です。n % 2 == 0 で偶数だけを絞り込んでいます。
CHEAT SHEET — まとめ
3行で分かる
  • forループでリストを作る処理を1行で書ける書き方
  • [式 for 変数 in リスト] が基本形
  • 条件付き抽出(if)も可能・読みにくくなったら普通の for に
リスト内包表記