Pythonのmap
関数は、指定された関数をシーケンス(リストやタプルなど)の各要素に適用して、新しいイテレータを生成します。この関数は、反復処理を簡潔に記述するために使用されます。
例えば、次のように使用することができます。
numbers = [1, 2, 3, 4, 5]
doubled_numbers = map(lambda x: x * 2, numbers)
print(list(doubled_numbers)) # [2, 4, 6, 8, 10]
この例では、numbers
リストの各要素に対してラムダ式(lambda x: x * 2
)を適用しています。map
関数は、各要素に対して指定された関数を適用し、その結果を含む新しいイテレータオブジェクト(doubled_numbers
)を生成します。
しかし、map
関数を使用する際に、リストのインデックス情報を取得することはできません。そのため、インデックス情報が必要な場合は、enumerate
関数を使用します。
numbers = [1, 2, 3]
indexed_numbers = map(lambda x: (x[0], x[1] * 2), enumerate(numbers))
print(list(indexed_numbers)) # [(0, 2), (1, 4), (2, 6)]
この例では、enumerate(numbers)
により、インデックスと値のタプルのリストが生成されます。その後、map
関数により、各タプルに対してラムダ式(lambda x: (x[0], x[1] * 2)
)を適用しています。このラムダ式は、インデックスと値を2倍した新しいタプルを生成します。
以上のように、Pythonのmap
関数とenumerate
関数を組み合わせることで、リストの各要素とそのインデックスに対する操作を簡潔に記述することができます。