カテゴリ: Python 更新日: 2025/07/11

Pythonでリスト内包表記を使ってループを簡潔に書く方法

Pythonでリスト内包表記を使ってループを簡潔に書く方法
Pythonでリスト内包表記を使ってループを簡潔に書く方法

先生と生徒の会話形式で理解しよう

生徒

「先生、Pythonでリストを作るときって、毎回for文を使わなきゃいけないんですか?」

先生

「いい質問ですね。実はPythonには、リスト内包表記という便利な書き方があるんですよ。ループをもっと短く、見やすく書けます。」

生徒

「それってどういう意味なんですか?初心者でも使えますか?」

先生

「もちろん。これから順番にリスト内包表記の基本から、実際の使い方まで丁寧に説明していきましょう!」

-

1. Pythonのリスト内包表記とは?

1. Pythonのリスト内包表記とは?
1. Pythonのリスト内包表記とは?

Pythonのリスト内包表記(list comprehension)とは、リストを短い書き方で作る方法のことです。通常のfor文を使った書き方よりも、シンプルで読みやすいのが特徴です。

例えば、「1から5までの数字をリストにしたい」という場合、普通のfor文だと次のように書きます。


numbers = []
for i in range(1, 6):
    numbers.append(i)
print(numbers)

このコードでは、numbersというリストに1〜5までを1つずつ追加しています。ですが、リスト内包表記を使えば、たった1行で同じことができます。


numbers = [i for i in range(1, 6)]
print(numbers)

どちらのコードも、結果は同じです。


[1, 2, 3, 4, 5]

2. なぜリスト内包表記を使うのか?

2. なぜリスト内包表記を使うのか?
2. なぜリスト内包表記を使うのか?

リスト内包表記を使うメリットは次のとおりです。

  • コードが短くなる(for文よりシンプル)
  • 読みやすい(ひと目で何をしているかわかる)
  • 初心者でも覚えやすいパターンになっている

ただし、慣れないうちは「?」と思うかもしれません。でも心配いりません。これからいろんな例を見ながら、ゆっくり覚えていきましょう。

3. リスト内包表記の基本構文

3. リスト内包表記の基本構文
3. リスト内包表記の基本構文

リスト内包表記の書き方は、次のような形です。


[変数 for 変数 in 繰り返しの対象]

この中で出てくる「for 変数 in ○○」という部分は、通常のfor文と同じ意味です。

つまり、「○○の中から1つずつ取り出して、変数に入れて、それをリストに追加する」という動きをしています。

4. 値を加工しながらリストを作る

4. 値を加工しながらリストを作る
4. 値を加工しながらリストを作る

リスト内包表記は、ただ値を取り出すだけでなく、取り出した値に計算や加工をしてからリストに入れることもできます。

例えば、「1から5までの数字を2倍したリスト」を作ってみましょう。


doubles = [i * 2 for i in range(1, 6)]
print(doubles)

[2, 4, 6, 8, 10]

i * 2の部分で、リストに入れる値を加工しています。

-

5. 条件付きのリスト内包表記

5. 条件付きのリスト内包表記
5. 条件付きのリスト内包表記

リスト内包表記では、条件付きで値を入れることもできます。例えば、「1から10までのうち、偶数だけを取り出したい」ときは、次のように書けます。


evens = [i for i in range(1, 11) if i % 2 == 0]
print(evens)

[2, 4, 6, 8, 10]

if i % 2 == 0の部分が条件です。%は「割ったあとの余り」を意味します。

6. 文字列を使ったリスト内包表記

6. 文字列を使ったリスト内包表記
6. 文字列を使ったリスト内包表記

リスト内包表記は、数字だけでなく文字列(文字の集まり)にも使えます。

例えば、「hello」という文字列の1文字ずつをリストにしてみましょう。


letters = [char for char in "hello"]
print(letters)

['h', 'e', 'l', 'l', 'o']

このように、文字列の1文字1文字を扱いたいときにも便利です。

7. ネスト(入れ子)のリスト内包表記

7. ネスト(入れ子)のリスト内包表記
7. ネスト(入れ子)のリスト内包表記

少し応用になりますが、2重のループを使ったリスト内包表記も可能です。

たとえば、「1〜3の数字と、'a'〜'c'の文字を組み合わせたい」場合です。


combinations = [str(i) + c for i in range(1, 4) for c in 'abc']
print(combinations)

['1a', '1b', '1c', '2a', '2b', '2c', '3a', '3b', '3c']

このように、複雑な組み合わせを簡単にリスト化できます。

8. リスト内包表記と普通のfor文の違い

8. リスト内包表記と普通のfor文の違い
8. リスト内包表記と普通のfor文の違い

リスト内包表記は簡潔ですが、処理が複雑になりすぎると逆に読みにくくなることもあります。

次のような場合は、通常のfor文の方が良いかもしれません。

  • 条件が複雑なとき
  • リストではなく、他のことをしたいとき
  • 説明やコメントを多く入れたいとき

使いどころを見極めて、リスト内包表記for文を上手に使い分けましょう。

コメント
コメント投稿は、ログインしてください

まだ口コミはありません。

カテゴリの一覧へ
新着記事
PHPでセッションを使ってフォーム入力を保持する方法を解説!初心者向けステップバイステップ
Pythonで文字列をリストに変換する方法!split()とjoin()の使い方
Pythonの変数とは?定義方法とデータ型を初心者向けに解説
PHPでメールフォームを作る方法を徹底解説!初心者向けにmail関数とPHPMailerの使い方も紹介
人気記事
No.1
PHP&Python記事人気No1
Pythonでテキストファイルを1行ずつ読み込む方法(readline() / readlines())
No.2
PHP&Python記事人気No2
Pythonのリストを辞書に変換する方法(dict() / zip())
No.3
PHP&Python記事人気No3
Pythonで文字列が数値か判定する方法!isdigit()・isnumeric()の違い
No.4
PHP&Python記事人気No4
初心者向けにPHP でファイルを開く・読み込む・書き込む方法(fopen, fwrite, fread)を解説する記事
-