Pythonのmap() と list(map()) の違いについて
質問
Pythonので次の記述の違いが分かりません。どういう風に使い分けられてるのでしょうか?
どなたか教えてもらえませんか。
- map(int, input().split())
- list(map(int, input().split()))
補足
AtcoderのABC問題で見かけることがあるのですが、どういう時にどっちを使えばいいのか分かりません。
0
Pythonので次の記述の違いが分かりません。どういう風に使い分けられてるのでしょうか?
どなたか教えてもらえませんか。
AtcoderのABC問題で見かけることがあるのですが、どういう時にどっちを使えばいいのか分かりません。
質問にだけ端的に答えるとmap
関数で返却されるiteratorで、list(map(function, iterable))
とすることで、listが取得できます。
なので、for文で一度内容を取り出ればいい場合のような、iteratorで問題ないケースでは、map
のみを使い、何度もアクセスする必要がある場合や、添え字を使ったランダムアクセスが必要な場合は、listに変換する必要があります
mapObj = map(int, input().split())
// 一回forループを回すことは、mapだけでもできる
for i in mapObj:
print(i)
mapObj = map(int, input().split())
// 以下はできない
// 同じiteratorを2度使う
for i in mapObj:
print(i)
for i in mapObj:
print(i + 1)
// 添え字付きでアクセスする
j = mapObj[-1]
mapは内容を取り出したところまでしか、第一引数の関数が評価されないため、多少演算量の差はありますが、listの方が上位互換でトラブルも少ないと思うので、
基本的にlistに変換するパターンを使えばいいと思います。
回答ありがとうございます!内容を十分理解できたわけではないですが、理解が進んだ気がします。教えてもらった内容をより理解できるよう努めます。