Python3 enumerate() 関数
enumerate()Pythonで反復可能オブジェクトを走査する際に、インデックスと値を同時に取得するための組み込み関数です。
使い方enumerate()インデックス(位置)と要素自体を同時に簡単に取得でき、追加のカウンタ変数を避けることができます。
単語の意味: enumerate「列挙」という意味で、一つ一つ挙げていくことを表します。
基本構文とパラメータ
構文形式
enumerate(iterable, start=0)
パラメータの説明
- パラメータ iterable:
- 型: イテラブル
- 説明: 列挙対象のイテラブル。
- パラメータ start(オプション):
- 型: 整数
- 説明: インデックスの開始値。デフォルトは 0。
関数の説明
- 戻り値: enumerate オブジェクト(イテレータ)を返します。
- 出力: 各反復で (index, value) タプルを返します。
例
例1:基本の使い方
例
# 基本的な enumerate の使い方
fruits = ["リンゴ", "バナナ", "オレンジ"]
# インデックスと値を取得
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# デフォルトは0から
print("---")
for index, fruit in enumerate(fruits):
print(fruit)
fruits = ["リンゴ", "バナナ", "オレンジ"]
# インデックスと値を取得
for index, fruit in enumerate(fruits):
print(f"{index}: {fruit}")
# デフォルトは0から
print("---")
for index, fruit in enumerate(fruits):
print(fruit)
予想される実行結果:
0: 苹果 1: 香蕉 2: 橙子 --- 0: 苹果 1: 香蕉 2: 橙子
コード解説:
- enumerate は (インデックス, 値) のタプルを返します。
- デフォルトのインデックスは 0 から始まります。
例2:開始インデックスの指定
例
# 1から番号を付ける
fruits = ["リンゴ", "バナナ", "オレンジ"]
for i, fruit in enumerate(fruits, start=1):
print(f"{i}番目の果物: {fruit}")
# 10から始める
print("---")
for i, fruit in enumerate(fruits, start=10):
print(f"インデックス {i}: {fruit}")
fruits = ["リンゴ", "バナナ", "オレンジ"]
for i, fruit in enumerate(fruits, start=1):
print(f"{i}番目の果物: {fruit}")
# 10から始める
print("---")
for i, fruit in enumerate(fruits, start=10):
print(f"インデックス {i}: {fruit}")
予想される実行結果:
第1个水果: 苹果 第2个水果: 香蕉 第3个水果: 橙子 --- 索引 10: 苹果 索引 11: 香蕉 索引 12: 橙子
start パラメータで開始インデックスを指定できます。
例3:リストへの変換
例
# リストに変換
fruits = ["リンゴ", "バナナ", "オレンジ"]
result = list(enumerate(fruits))
print(result) # 出力: [(0, 'リンゴ'), (1, 'バナナ'), (2, 'オレンジ')]
# 辞書に変換(値が文字列の場合)
result = dict(enumerate(fruits))
print(result) # 出力: {0: 'リンゴ', 1: 'バナナ', 2: 'オレンジ'}
# リスト内包表記と組み合わせる
squares = [x**2 for x in range(5)]
indexed_squares = [(i, v) for i, v in enumerate(squares)]
print(indexed_squares) # 出力: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
fruits = ["リンゴ", "バナナ", "オレンジ"]
result = list(enumerate(fruits))
print(result) # 出力: [(0, 'リンゴ'), (1, 'バナナ'), (2, 'オレンジ')]
# 辞書に変換(値が文字列の場合)
result = dict(enumerate(fruits))
print(result) # 出力: {0: 'リンゴ', 1: 'バナナ', 2: 'オレンジ'}
# リスト内包表記と組み合わせる
squares = [x**2 for x in range(5)]
indexed_squares = [(i, v) for i, v in enumerate(squares)]
print(indexed_squares) # 出力: [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16)]
予想される実行結果:
enumerate は簡単にリストや辞書に変換できます。
例4:実際の応用
例
# 要素のインデックスを検索
fruits = ["リンゴ", "バナナ", "オレンジ", "バナナ", "リンゴ"]
target = "バナナ"
for index, fruit in enumerate(fruits):
if fruit == target:
print(f"インデックス {index} で {target} を見つけました")
break
# 条件と組み合わせてすべての一致項目を検索
print("\nすべてのバナナの位置:)
for index, fruit in enumerate(fruits):
if fruit == "バナナ":
print(index, end=" ") # 出力: 1 3
# 文字列内の文字位置を検索
text = "hello"
for i, c in enumerate(text):
print(f"'{c}' は位置 {i} にあります")
fruits = ["リンゴ", "バナナ", "オレンジ", "バナナ", "リンゴ"]
target = "バナナ"
for index, fruit in enumerate(fruits):
if fruit == target:
print(f"インデックス {index} で {target} を見つけました")
break
# 条件と組み合わせてすべての一致項目を検索
print("\nすべてのバナナの位置:)
for index, fruit in enumerate(fruits):
if fruit == "バナナ":
print(index, end=" ") # 出力: 1 3
# 文字列内の文字位置を検索
text = "hello"
for i, c in enumerate(text):
print(f"'{c}' は位置 {i} にあります")
予想される実行結果:
enumerate は、検索や置換などインデックスが必要な場面でよく使われます。
例5:辞書との組み合わせ
例
# 辞書の enumerate
person = {"name": "Tom", "age": 20, "city": "Beijing"}
# 辞書のキーと値のペアを走査する(items が必要)
for index, (key, value) in enumerate(person.items()):
print(f"{index}: {key} = {value}")
# 番号付きの辞書を作成
items = ["a", "b", "c"]
numbered = {i+1: v for i, v in enumerate(items)}
print(numbered) # 出力: {1: 'a', 2: 'b', 3: 'c'}
person = {"name": "Tom", "age": 20, "city": "Beijing"}
# 辞書のキーと値のペアを走査する(items が必要)
for index, (key, value) in enumerate(person.items()):
print(f"{index}: {key} = {value}")
# 番号付きの辞書を作成
items = ["a", "b", "c"]
numbered = {i+1: v for i, v in enumerate(items)}
print(numbered) # 出力: {1: 'a', 2: 'b', 3: 'c'}
予想される実行結果:
enumerate を辞書と組み合わせて使用する場合は、items() メソッドを使用する必要があります。
その他の拡張
Python3 組み込み関数