Python3.8.5でのenumerate関数について。
#①enumerate関数を使わない場合
i = 0
for hiragana in ['あい', 'うえ', 'お']:
print(i, hiragana)
i += 1
#②enumerate関数を使った場合
for i, hiragana in enumerate(['あい', 'うえ', 'お']):
print(i, hiragana)
#③リストなしでenumerate関数を使った場合
for i, hiragana in enumerate('かきくけこ'):
print(i, hiragana)
i = 0
for hiragana in ['あい', 'うえ', 'お']:
print(i, hiragana)
i += 1
#②enumerate関数を使った場合
for i, hiragana in enumerate(['あい', 'うえ', 'お']):
print(i, hiragana)
#③リストなしでenumerate関数を使った場合
for i, hiragana in enumerate('かきくけこ'):
print(i, hiragana)
enumerate関数は、①のfor文でやろうとしていることをもうちょっとスマートに記述するために使う関数です。
どういう処理になるのかは、実際に出力された値を見ていったほうがわかりやすいと思います。
上のプログラムを処理すると、それぞれ以下のように出力されます。
①の出力結果
0 あい
1 うえ
2 お
②の出力結果
0 あい
1 うえ
2 お
③の出力結果
0 か
1 き
2 く
3 け
4 こ
上記のように、enumerate関数を使うとfor文のなかの処理を1回まわすごとに、0からはじまる連続した数値が変数iのなかに自動で上書きされていきます。
この場合の変数iに格納される数値の終端は、enumerate(パラメータ);で指定したパラメータの総数と同じものになります。
なので②の場合はリストとして3つの値がパラメータに指定されているので、変数iには0、1、2の順に数値が格納されていきます。
③の場合は5つの文字がパラメータとして指定されているので、0から4までの5つの数値が0から順に変数iに格納されていきます。
ちなみに、出力結果にある0や1などの数値とその後ろに出力される文字列の間にある半角スペースの存在は、たぶんPythonの仕様です。
この半角スペースは、おそらく削除することはできません。
以上です。