本文へスキップ
BecomeCoder

Pythonコース · 第5章 関数 ― 処理に名前をつけてまとめる · レッスン21

内包表記 ― リストを一行で作る

ブラウザで完結

導入

「各要素を加工した新しいリスト」を作る場面はとても多く、Python には内包表記という短く書ける書き方があります。

説明

[式 for 変数 in リスト] で、各要素を加工した新しいリストを作れます。「元のリストの各要素を、式で変換して、新しいリストに詰め直す」動きです。

flowchart LR
  src["[1, 2, 3, 4, 5]"] -->|"各要素を n*n に変換"| dst["[1, 4, 9, 16, 25]"]

まずは for で書いた形と比べましょう。

# for で書くと…
squares = []
for n in range(1, 6):
    squares.append(n * n)
print(squares)          # [1, 4, 9, 16, 25]

# 内包表記なら1行
squares = [n * n for n in range(1, 6)]
print(squares)          # [1, 4, 9, 16, 25]

if を付けると、条件に合う要素だけを残せます。

evens = [n for n in range(1, 11) if n % 2 == 0]
print(evens)            # [2, 4, 6, 8, 10]

words = ["Apple", "Banana", "Cherry"]
lower = [w.lower() for w in words]
print(lower)            # ['apple', 'banana', 'cherry']

慣れると読みやすく、Python らしいコードになります。

やってみよう

range() の範囲や の部分を変えて、できるリストがどう変わるか確かめましょう。

演習

内包表記で、1 から 5 までの各数を3倍したリストを作って表示してください(結果は [3, 6, 9, 12, 15])。

ヒント1を見る

[n * 3 for n in range(1, 6)]

実際に動かしてみよう

下のエディタにPythonを書いて「実行」を押すと、ブラウザ内のPythonで出力が表示されます。本文の例をそのまま試したり、書き換えたりしてみましょう(input() を使う回は「標準入力」欄に値を入れてから実行します)。

Python — ブラウザ内で実行

ブラウザ内でPythonを動かす環境(Skulpt)を読み込みます(初回のみ少し時間がかかります)。
スクロールして表示された時点でも自動で読み込まれます。