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

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

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

実行環境

リスト内包表記について

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

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

if 文・for 文については以下の記事を参考にしてください。


リスト内包表記の使い方

もう一度、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 文の内容を学習したい!という方は、元副社長の動画がおすすめです。


https://www.youtube.com/watch?v=tOULTwsiSN4

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

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

こちらの記事もオススメ

まずは無料で学びたい方・最速で学びたい方へ

まずは無料で学びたい方: Python&機械学習入門コースがおすすめ

Python&機械学習入門コース

AI・機械学習を学び始めるならまずはここから!経産省の Web サイトでも紹介されているわかりやすいと評判の Python&機械学習入門コースが無料で受けられます!
さらにステップアップした脱ブラックボックスコースや、IT パスポートをはじめとした資格取得を目指すコースもなんと無料です!

無料で学ぶ

最速で学びたい方:キカガクの長期コースがおすすめ

一生学び放題

続々と転職・キャリアアップに成功中!受講生ファーストのサポートが人気のポイントです!

AI・機械学習・データサイエンスといえばキカガク!
非常に需要が高まっている最先端スキルを「今のうちに」習得しませんか?

無料説明会を週 2 開催しています。毎月受講生の定員がございますので確認はお早めに!

説明会ではこんなことをお話します!
  • 国も企業も育成に力を入れている先端 IT 人材とは
  • キカガクの研修実績
  • 長期コースでの学び方、できるようになること
  • 料金・給付金について
  • 質疑応答

参考リンク

参考 Python 3.9.2 ドキュメント

参考 Chainer チュートリアル