Home » 電子書籍 » VBAユーザーのためのPython超入門 » Pythonのfor文で連番を出力するならenumerate関数

Pythonのfor文で連番を出力するならenumerate関数

KDP(Kindle Direct Publishing)による拙著『VBAユーザーのためのPython超入門』のchapter 7で、文字列から1文字ずつ取得するfor文について解説しています。

こういったループ処理では、連番も一緒に出力したいというケースが結構あります。

for文で連番も出力するサンプル

拙著を読んでいただいた、VBAのFor Each~Next文をご存知の方なら、以下のようなコードを思いつくことでしょう。

cnt = 0
for itm in 'abcde':
    cnt = cnt + 1
    print(cnt, itm)

連番をカウント(count)するための変数cntを用意しておいて、
  cnt = 0

for文の中でインクリメントして、
  for itm in 'abcde':
      cnt = cnt + 1

連番を要素(item)と共に出力する処理です。
      print(cnt, itm)

enumerate関数で連番も出力できる

上記のようなコードでもいいのですが、Pythonの組み込み関数enumerateを使うと、コードの行数を減らせます。

for cnt, itm in enumerate('abcde', start=1):
    print(cnt, itm)

enumerate(イニュメレイト)には「数え上げる」といった意味があります。

これも実行すれば、
  1 a
  2 b
  3 c
  4 d
  5 e
と出力されます。

enumerate関数は引数を2つ指定でき、第1引数に文字列やリストなどイテラブルなオブジェクトを指定します。上記のスクリプトでは文字列 'abcde' を指定しています。
      for cnt, itm in enumerate('abcde', start=1):

連番の初期値はenumerate関数の引数startで指定

省略可能な第2引数・startは、連番の初期値を指定します。上記スクリプトでは1を指定しているので1オリジンの連番が出力されました。
      for cnt, itm in enumerate('abcde', start=1):

引数startを省略した場合は0オリジンの連番となるので、
  for cnt, itm in enumerate('abcde'):
      print(cnt, itm)
を実行すると
  0 a
  1 b
  2 c
  3 d
  4 e
と出力されます。

startに101を指定した
  for cnt, itm in enumerate('abcde', start=101):
      print(cnt, itm)
ならば、
  101 a
  102 b
  103 c
  104 d
  105 e
が出力されます。

最終更新日時:2020-08-14 16:19

[スポンサードリンク]

Home » 電子書籍 » VBAユーザーのためのPython超入門 » Pythonのfor文で連番を出力するならenumerate関数

「VBAユーザーのためのPython超入門」の記事一覧

検索


Copyright © インストラクターのネタ帳 All Rights Reserved.

.