Towel
@Towel

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

Pythonのmap() と list(map()) の違いについて

質問

Pythonので次の記述の違いが分かりません。どういう風に使い分けられてるのでしょうか?
どなたか教えてもらえませんか。

  • map(int, input().split())
  • list(map(int, input().split()))

補足

AtcoderのABC問題で見かけることがあるのですが、どういう時にどっちを使えばいいのか分かりません。

0

2Answer

質問にだけ端的に答えると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に変換するパターンを使えばいいと思います。

2Like

回答ありがとうございます!内容を十分理解できたわけではないですが、理解が進んだ気がします。教えてもらった内容をより理解できるよう努めます。

0Like

Your answer might help someone💌