Pythonで `enumerate()` 関数を使ってインデックス付きループを作成する方法を解説します。
`enumerate()` 関数は、シーケンス(リストや文字列など)の要素に対して、インデックス番号と要素を同時に取得できる便利な関数です。
基本的な使い方
fruits = ['りんご', 'バナナ', 'オレンジ']
for i, fruit in enumerate(fruits):
print(f'インデックス: {i}, 値: {fruit}')
# 出力
# インデックス: 0, 値: りんご
# インデックス: 1, 値: バナナ
# インデックス: 2, 値: オレンジインデックスの開始番号を指定する
デフォルトでは0から始まりますが、開始番号を変更することができます:
fruits = ['りんご', 'バナナ', 'オレンジ']
for i, fruit in enumerate(fruits, start=1):
print(f'番号: {i}, フルーツ: {fruit}')
# 出力
# 番号: 1, フルーツ: りんご
# 番号: 2, フルーツ: バナナ
# 番号: 3, フルーツ: オレンジ実践的な使用例
1. リスト内包表記での使用
numbers = ['one', 'two', 'three']
numbered_list = [f'{i+1}. {num}' for i, num in enumerate(numbers)]
print(numbered_list)
# 出力: ['1. one', '2. two', '3. three']2. 辞書の作成
fruits = ['りんご', 'バナナ', 'オレンジ']
fruit_dict = {i: fruit for i, fruit in enumerate(fruits)}
print(fruit_dict)
# 出力: {0: 'りんご', 1: 'バナナ', 2: 'オレンジ'}3. 複数行の文字列処理
text = """1行目
2行目
3行目"""
for i, line in enumerate(text.split('\n'), 1):
print(f'行{i}: {line}')
# 出力
# 行1: 1行目
# 行2: 2行目
# 行3: 3行目注意点とベストプラクティス
- `enumerate()` はイテレータを返すため、メモリ効率が良い
- 大きなデータセットを処理する際に適している
- インデックスが必要ない場合は通常の `for` ループを使用する方が読みやすい
まとめ
`enumerate()` 関数は以下の場合に特に便利です:
- インデックス番号が必要な繰り返し処理
- 番号付きリストの作成
- データ構造の変換(リストから辞書へなど)
適切に使用することで、よりクリーンで効率的なコードを書くことができます。