まず、その出力は間違えています。本当にその出力が出たのでしょうか?
こちらでやると以下のようになります。
python
1index0:1
2index1:2
3index2:3
こうなることを前提に話をします。
enumerateについて
enumarateは、引数に与えられたリスト様の物について、デフォルトでは0から順に数字をくっつけて返すものです。 その値がリストの何番目にあるかをループの中で使いたいときり使われることが多いです。
enamerate(['リンゴ', 'ミカン', 'カキ', 'ナシ'])
とすると、リストの内容に0から順に数字を割り当ててペアにして返します。
結果は、(0, 'リンゴ'), (1, 'ミカン'), (2, 'カキ'), (3, 'ナシ')
のようなリストになります。
このとき、ennumarateにリストを渡して、番号の初期値を指定しなかったので、数字がリンゴなどの値のリストのインデックスと同じになっていますが、これは、そうなっているだけで、enumerateが付ける数字とリストのインデックスとは関係がありません。
たとえば、初期値を10とするには、enamerate(['リンゴ', 'ミカン', 'カキ', 'ナシ'], start=10)
とします。すると結果は、(10, 'リンゴ'), (11, 'ミカン'), (12, 'カキ'), (13, 'ナシ')
のようになります。
for文の変数について
pythonではfor文に複数の変数を与えると、取り出されたリストやタプルのそれぞれの対応する値にわりあてることができます。
先程の例をfor文で回すと、
python
1for num,name in enumerate(['リンゴ', 'ミカン', 'カキ', 'ナシ']):
2 print(f'num: {num}, name: {name}')
出力は
text
1num: 0, name: リンゴ
2num: 1, name: ミカン
3num: 2, name: カキ
4num: 3, name: ナシ
となります。