Pythonのmap
関数は、リストやタプルなどのイテラブルなオブジェクトの各要素に対して関数を適用し、その結果を新しいイテレータとして生成します。
引数が1つの場合
たとえば、リスト内の数字を全て2乗にしたいときは次のように書けます。
def square(x):
return x**2
test = [1,2,3,4,5]
test_result = map(square, test)
print(list(test_result)) # [1,4,9,16,25]
引数が複数の場合
複数引数をとる関数にmap
を適用させたいときとかあると思います。その時は以下のように書けます。
def matmul(x, y):
return x*y
test1 = [1,2,3,4,5]
test2 = [3,4,5,6,7]
test_result = map(matmul, test1, test2)
print(list(test_result)) # [3,8,15,24,35]
mapとリスト内法表記のスピード比較
map
とリスト内法表記のスピードを比べてみました。
def mutmal(x,y):
return x*y
a = range(100000)
sum_time = 0
for k in range(10):
start = time.time()
b = map(mutmal, a,a)
c = list(b)
sum_time += time.time() - start
print(c[:5]) # [1,4,9,16,25]
print("finish in {}s".format(sum_time/10)) # 0.014s
結果としてはあまり変わらないですね。
以上、Pythonのmap
関数とその引数についての解説でした。この記事がPythonのmap
関数を理解するのに役立つことを願っています。