KDP(Kindle Direct Publishing)による拙著『VBAユーザーのためのPython超入門』でPythonの学習を始めた方に、早めに習得していただきたい書き方があります。
「リスト内包表記」と呼ばれるコードの書き方です。
for文では複数行が必要になるコードを、リスト内包表記を使うと1行で書けます。
市販のPython入門書では、リスト内包表記について触れていないものも割とあるのですが、ループ処理自体をご存知のVBAユーザーのみなさんには、早めに学習することをおすすめします。
リスト内包表記のサンプル
for文でリストを作成するコードと比較して、リスト内包表記を理解しましょう。
for文でリストを作成する場合
まず、for文を使ったリスト作成を確認しておきます。
1から5までの整数を、それぞれ3乗した値を要素として含むリスト
[1, 8, 27, 64, 125]
を作成したいときに、for文を使う場合は以下のようなコードです。
for i in range(1, 6):
arr.append(i**3)
空っぽのリストarrを用意しておいてから、
arr = []
カンウター変数iを使った、初期値1、終了値5のfor文の中で、
for i in range(1, 6):
整数を3乗した値をリストarrに追加しています。
arr.append(i**3)
上記のコードを実行すれば、変数arrには、
[1, 8, 27, 64, 125]
のように、1から5までの整数を3乗した値が要素として格納されます。
リスト内包表記を使う場合
以上のようなfor文を使ったコードを、リスト内包表記を使うと1行で済ませられます。
という1行で、先ほどは
arr = []
for i in range(1, 6):
arr.append(i**3)
と、3行必要だったfor文を使ったコードと同じリスト
[1, 8, 27, 64, 125]
が得られます。
for文とリスト内包表記の比較
for文で空っぽのリストを準備する処理
arr = []
が、リスト内包表記の、[ ] に該当し、
arr = [i**3 for i in range(1, 6)]
forの行
for i in range(1, 6):
から、末尾の「:」を除いたコードをそのまま[ ] の中に書き、
arr = [i**3 for i in range(1, 6)]
for文内で行っていたリストarrへの追加処理で書いた式を、
arr.append(i**3)
リスト内包表記では、forの前に書きます。
arr = [i**3 for i in range(1, 6)]
慣れないうちはfor文のほうが、もちろん理解しやすいはずですが、慣れてくると全体の行数が減るので、コード全体としてはリスト内包表記を使うほうがわかりやすく感じられると思います。
Pythonの、for文を使ったリスト作成に慣れてきたら、リスト内包表記にもチャレンジしてみてください。
- 『VBAユーザーのためのPython超入門』出ました。
- 『VBAユーザーのためのPython超入門』に登場するVBA関数一覧
- 『VBAユーザーのためのPython超入門』に登場するPythonの関数・メソッド一覧
最終更新日時:2022-03-01 12:37
- Newer:Lastプロパティを持つWordのクラス一覧
- Older:InlineShapeの属するParagraphを取得する
Home » 電子書籍 » VBAユーザーのためのPython超入門 » リスト内包表記を早めに学習しましょう