Python enumerate()をマスター:リスト、タプル、文字列、辞書でインデックス付きループ
Python enumerate()をマスター:リスト、タプル、文字列、辞書でインデックス付きループ
enumerate()は、任意のイテラブルにカウンタを付与し、(インデックス, 値)タプルのイテレータを返すPython組み込み関数です。公式Pythonドキュメントによると、反復処理中に位置と要素の両方にアクセスする簡潔で効率的な方法を提供します。
重要なポイント
enumerate()の構文とパラメータを理解- カスタム開始インデックスの設定方法
- リスト、タプル、文字列、辞書への
enumerate()適用 - 手動インデックスより優れたパフォーマンスを認識
構文
enumerate(iterable, start=0)
パラメータ
iterable: イテレーションをサポートする任意のオブジェクトstart(オプション): カウンタの初期値。デフォルトは0
戻り値
(インデックス, 要素)のペアを生成するイテレータ。インデックスはstartから始まり、要素ごとに1ずつ増加。
enumerate()の基本例
リストmy_listをenumerate()に渡し、結果のイテレータをリストに変換して表示:
my_list = ['A', 'B', 'C', 'D'] print(list(enumerate(my_list)))
出力:
[(0, 'A'), (1, 'B'), (2, 'C'), (3, 'D')]
カスタム開始インデックス
start引数で番号をシフト:
my_list = ['A', 'B', 'C', 'D'] print(list(enumerate(my_list, 2)))
出力:
[(2, 'A'), (3, 'B'), (4, 'C'), (5, 'D')]
enumerate()でのループ
forループ内でenumerate()を使うと、別途カウンタ変数なしでコードがシンプルに:
my_list = ['A', 'B', 'C', 'D']
for index, value in enumerate(my_list):
print(index, value)
print("---")
for index, value in enumerate(my_list, 10):
print(index, value)
出力:
0 A 1 B 2 C 3 D --- 10 A 11 B 12 C 13 D
タプルの列挙
タプルにも同じパターンが適用:
my_tuple = ('A', 'B', 'C', 'D', 'E')
for index, value in enumerate(my_tuple):
print(index, value)
出力:
0 A 1 B 2 C 3 D 4 E
文字列の列挙
Pythonでは文字列もイテラブルなので、enumerate()で各文字の位置を取得:
my_str = "Guru99"
for index, char in enumerate(my_str):
print(index, char)
出力:
0 G 1 u 2 r 3 u 4 9 5 9
辞書の列挙
辞書をenumerate()に渡すと、キーを反復:
my_dict = {"a": "PHP", "b": "JAVA", "c": "PYTHON", "d": "NODEJS"}
for index, key in enumerate(my_dict):
print(index, key)
出力:
0 a 1 b 2 c 3 d
なぜenumerate()を使うのか?
- インデックスと値を単一の読みやすい式で取得
- ループ内で
list.index()を呼ぶと毎回O(n)の探索が発生するが、enumerate()はイテレーションあたりO(1)で大規模コレクションのパフォーマンス向上 - ボイラープレートコードを削減し、保守性向上とバグ減少に貢献
まとめ
enumerate()はイテラブル要素とインデックスをペアリングするPythonコア機能- オプションの
startパラメータで番号をカスタマイズ可能 - リスト、タプル、文字列、辞書、あらゆるイテラブルに適用可能
- インデックス付きループのシングルパス効率的ソリューションを提供
- 最新かつ正確な使用法は公式ドキュメントを参照
Python
- Python 関数引数完全マスター: 位置引数・キーワード引数・デフォルト引数
- Python ラムダ関数: 無名関数の実践ガイド
- Pythonジェネレータ:効率的イテレーションと高度なユースケース
- Pythonクロージャ解説:ネスト関数が変数を捕捉する仕組み
- Pythonデコレータマスター:エキスパート技法で関数を拡張
- Pythonループ完全ガイド:for、while、break、continue、enumerate
- Python strip()メソッド完全ガイド:実践例付き
- Python str.count()マスター:文字と部分文字列のカウント実例集
- Python len()関数:オブジェクトの長さを測る実践ガイド
- Python range()関数をマスター:基礎から応用まで
- Python yieldをマスター:ジェネレータvs return – 実践ガイド