こんにちは、機械学習の講師をしている木下です!
ここでは、Python の文法の中でもよく使われるリストの内包表記について初学者向けに解説していきます。
目次
実行環境
- Google Colaboratory
- Python:3.9.2
リスト内包表記について
リストの内包表記は、よく用いられる if 文・for 文を一行で記載できる画期的な記述方法です。内包表記は繰り返し処理や条件分岐の結果をリストに格納したいときに絶大な力を発揮します。for 文や if 文の中に append などを用いている場合にはぜひ使用を検討してみてください!
ただし、慣れないうちは非常に難しく感じる書き方なので、ここで一緒に押さえて活用できるようにしていきましょう!
if 文・for 文については以下の記事を参考にしてください。
【Python 入門】if 文の使い方をわかりやすく解説!else/elif も紹介
【Python 入門】for 文の使い方を解説!range() 関数も紹介
リスト内包表記の使い方
もう一度、for
文の基本的な書き方を記載しておきます。
出典:2.7.1. 繰り返し(for 文)|Chainer Tutorial
for
文の構文繰り返したい処理①
繰り返したい処理②
︙
for 文の内包表記の書き方
ここでは for 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
サンプルコードは以下の通りです。
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 文は処理したい式を先頭に書いて、[] で囲うだけなんです!
if 文の内包表記の書き方
次に if 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
サンプルコードは以下の通りです。
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 条件式を末尾に書くだけなんです!
if/else 文の内包表記の書き方
最後に if/else 文を使ったコードとリスト内包表記のコード、 2 つを比較して、どのような関係性にあるのか把握していきましょう。
if/else を含むと煩雑なコードになりやすいので、ここでしっかりと抑えておきましょう。
サンプルコードは以下の通りです。
odd10 = []
for i in range(10):
if i % 2 == 1:
odd10.append(i*10)
else:
odd10.append(i)
print(odd10)
odd10 = []
for i in range(10):
odd10.append(i * 10 if i % 2 == 1 else i)
print(odd10)
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 の際の処理を追加するだけなんです!
最後に
以上です。本記事では、Python の文法である リスト内包表記を解説しました。
以下、まとめになります。
- リスト内包表記は、繰り返し処理や条件式を一行にまとめることができる構文
- 結果が一つのリストにまとまって返ってくる
もし、動画で for
文の内容を学習したい!という方は、元副社長の動画がおすすめです。
もし忘れてしまったら本記事を思い出して再度復習してみてください。
以上、Python 学習している方々のお力添えになれば幸いです!
(本記事はキカガク長期コース卒業生に協力していただき作成しました)
参考リンク
参考 Python 3.9.2 ドキュメント 参考 Chainer チュートリアル大人気コース「Python & 機械学習入門コース」が無料!
現在 e ラーニングプラットフォーム「キカガク」に無料登録すると、これまで多くの方にご受講いただいた、Python の基礎から機械学習の数学やプログラミングまでを学べる大人気コース「Python & 機械学習入門コース」が無料です。
好評である手書きの数学とハンズオン形式のプログラミングを通じて、初学者でも数学の理論から実装まで一から学習できます。また、動画で丁寧に解説しているため、迷うことなく最後まで継続して学習しやすいです。
Python の基礎から機械学習を学習したい方は、ぜひ教材の1つとしてご利用ください!