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を使うと、コードの行数を減らせます。
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
- Newer:Word VBAでカーソルを行末に移動する
- Older:入力規則で数式を使って以上・以下の条件設定を行うには
Home » 電子書籍 » VBAユーザーのためのPython超入門 » Pythonのfor文で連番を出力するならenumerate関数