機械学習・ディープラーニングがゼロから学べる大人気『脱ブラ』が無料に!

【Python 入門】リスト内包表記について解説!

こんにちは、機械学習の講師をしている木下です!

ここでは、Python の文法の中でもよく使われるリストの内包表記について初学者向けに解説していきます。

実行環境

リスト内包表記について

リストの内包表記は、よく用いられる if 文・for 文を一行で記載できる画期的な記述方法です。内包表記は繰り返し処理や条件分岐の結果をリストに格納したいときに絶大な力を発揮します。for 文や if 文の中に append などを用いている場合にはぜひ使用を検討してみてください!

ただし、慣れないうちは非常に難しく感じる書き方なので、ここで一緒に押さえて活用できるようにしていきましょう!

if 文・for 文については以下の記事を参考にしてください。
【Python 入門】if 文の使い方をわかりやすく解説!else/elif も紹介 【Python 入門】for 文の使い方を解説!range() 関数も紹介 【Python 入門】for 文の使い方を解説!range() 関数も紹介

リスト内包表記の使い方

もう一度、for 文の基本的な書き方を記載しておきます。
Python の for 文紹介
出典:2.7.1. 繰り返し(for 文)|Chainer Tutorial

for 文の構文
for 変数名 in イテラブルオブジェクト:
    繰り返したい処理①
    繰り返したい処理②
                ︙

for 文の内包表記の書き方

ここでは for 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
サンプルコードは以下の通りです。

for 文によるコード
double = []
for i in range(5):
    double.append(i*2)
print(double)
リスト内包表記によるコード
double = [i*2 for i in range(5)]
print(double)
実行結果
# 実行結果
[0, 2, 4, 6, 8]

記述方法の違いがわかったでしょうか?簡単にいうと、リスト内包表記の for 文は処理したい式を先頭に書いて、[] で囲うだけなんです!

リスト内包表記の構文
[処理 for 変数名 in イテラブルオブジェクト]

if 文の内包表記の書き方

次に if 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
サンプルコードは以下の通りです。

if 文によるコード
odds = []
for i in range(10):
    if i % 2 == 1:
        odds.append(i)
print(odds)
リスト内包表記によるコード
odds = [i for i in range(10) if i % 2 == 1]
print(odds)
実行結果
# 実行結果
[1, 3, 5, 7, 9]

リスト内包表記の if 文は、for 文の内包表記に加えて、if 条件式を末尾に書くだけなんです!

リスト内包表記の構文
[処理 for 変数名 in イテラブルオブジェクト if 条件式]

if/else 文の内包表記の書き方

最後に if/else 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
if/else を含むと煩雑なコードになりやすいので、ここでしっかりと抑えておきましょう。
サンプルコードは以下の通りです。

if 文によるコード
odd10 = []
for i in range(10):
    if i % 2 == 1:
        odd10.append(i*10)
    else:
        odd10.append(i)
print(odd10)
if 文のリスト内包表記によるコード
odd10 = []
for i in range(10):
    odd10.append(i * 10 if i % 2 == 1 else i)
print(odd10)
for 文と if 文のリスト内包表記によるコード
odd10 = [i * 10 if i % 2 == 1 else i for i in range(10)]
print(odd10)
実行結果
# 実行結果
[0, 10, 2, 30, 4, 50, 6, 70, 8, 90]

リスト内包表記の if/else 文は、if 文の内包表記に加えて、else の際の処理を追加するだけなんです!

リスト内包表記の構文
[条件式が True のときの処理 if 条件式 else 条件式が False のときの処理 for 変数名 in イテラブルオブジェクト]

最後に

以上です。本記事では、Python の文法である リスト内包表記を解説しました。

以下、まとめになります。

  • リスト内包表記は、繰り返し処理や条件式を一行にまとめることができる構文
  • 結果が一つのリストにまとまって返ってくる

もし、動画で for 文の内容を学習したい!という方は、元副社長の動画がおすすめです。


もし忘れてしまったら本記事を思い出して再度復習してみてください。

以上、Python 学習している方々のお力添えになれば幸いです!
(本記事はキカガク長期コース卒業生に協力していただき作成しました)

参考リンク

参考 Python 3.9.2 ドキュメント 参考 Chainer チュートリアル

大人気コース「Python & 機械学習入門コース」が無料!

現在 e ラーニングプラットフォーム「キカガク」に無料登録すると、これまで多くの方にご受講いただいた、Python の基礎から機械学習の数学やプログラミングまでを学べる大人気コース「Python & 機械学習入門コース」が無料です。

好評である手書きの数学とハンズオン形式のプログラミングを通じて、初学者でも数学の理論から実装まで一から学習できます。また、動画で丁寧に解説しているため、迷うことなく最後まで継続して学習しやすいです。

Python の基礎から機械学習を学習したい方は、ぜひ教材の1つとしてご利用ください!