たとえば、文字列のインデックスを取得したいとき、
forループをまわせば、
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19  | 
						>>> s = 'PythonCarnival' >>> for item in s: ...     print(item, 'のインデックスは', offset) ...     offset += 1 ...  P のインデックスは 0 y のインデックスは 1 t のインデックスは 2 h のインデックスは 3 o のインデックスは 4 n のインデックスは 5 C のインデックスは 6 a のインデックスは 7 r のインデックスは 8 n のインデックスは 9 i のインデックスは 10 v のインデックスは 11 a のインデックスは 12 l のインデックスは 13  | 
					
しかし、インデックスと要素を取得したければ、enumerate関数でもっとシンプルに簡単にできます。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18  | 
						>>> s = 'PythonCarnival' >>> for (offset, item) in enumerate(s): ...     print(item, 'のインデックスは', offset) ...  P のインデックスは 0 y のインデックスは 1 t のインデックスは 2 h のインデックスは 3 o のインデックスは 4 n のインデックスは 5 C のインデックスは 6 a のインデックスは 7 r のインデックスは 8 n のインデックスは 9 i のインデックスは 10 v のインデックスは 11 a のインデックスは 12 l のインデックスは 13  | 
					
リストを順番に処理する過程でenumerateは大活躍します。インデックスと要素の両方が必要になることはけっこうあります。
enumerateを使うとパイソニック(Pythonらしい)なコードに仕上がります。
シンプルで簡単です。
| 
					 1 2 3 4 5 6 7 8 9  | 
						>>> words = ['Python', 'Django', 'Flask', 'Carnival', 'AI'] >>> for i,w in enumerate(words): ...     print(w, 'は', i, '番目です') ...  Python は 0 番目です Django は 1 番目です Flask は 2 番目です Carnival は 3 番目です AI は 4 番目です  | 
					
インデックスだけが必要な時は_(アンダーバー)を使います。
| 
					 1 2 3 4 5 6 7 8 9  | 
						>>> words = ['Python', 'Django', 'Flask', 'Carnival', 'AI'] >>> for i, _ in enumerate(words): ...     print ('インデックスだけ→', i) ...  インデックスだけ→ 0 インデックスだけ→ 1 インデックスだけ→ 2 インデックスだけ→ 3 インデックスだけ→ 4  | 
					
こちらの書き方はおすすめされません。
| 
					 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22  | 
						>>> words = ['Python', 'Django', 'Flask', 'Carnival', 'AI'] >>> for i in range(len(words)): ...     print(words[i], 'は', i, '番目です') ...  Python は 0 番目です Django は 1 番目です Flask は 2 番目です Carnival は 3 番目です AI は 4 番目です >>> i = 0 >>> for w in words: ...     print(w, 'は', i, '番目です') ...     i += 1 ...  Python は 0 番目です Django は 1 番目です Flask は 2 番目です Carnival は 3 番目です AI は 4 番目です  |