mo_chi
@mo_chi

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Atcoderにおける入出力処理について

解決したいこと

競技プログラミングでよくある下記について質問です。

標準入力
2 3 5 7 8 
a = list(map(int, input().split()))

とした場合、split()で分割された時点でinput()で入力された値は文字列型のリストになっていますよね?
inputで得た値は文字列型のため、map関数でint型に変換するのは分かるのですが、なぜリストに変換しなければならないのでしょうか?
すでにリスト型になっているのではないかと思うのですが……

0

1Answer

mapで結果を得たので型としてはmapですね.mapについての詳しい解説はこちらを参考にしてください.
変換する理由として,配列の機能として必須なランダムアクセスができないことが挙げられます.なのでlistに変換します.

map_type = map(int, "2 3 5 7 8".split())
list_type = list(map_type)
length = len(list_type)
print(type(map_type), type(list_type)) # <class 'map'> <class 'list'>

for num in list_type: # forで回せる
	print("list", num)

for num in map_type: # 何も表示されない
	print("map", num)

for i in range(length): # ランダムアクセスができる
	print("list", list_type[i])

for i in range(length): # ランダムアクセス不可でエラーになる
	print("map", map_type[i])
0Like

Comments

  1. @mo_chi

    Questioner

    map型に変換されてしまっていたから戻す必要があったのですね!
    調べても分からなくて、とても困っていたので助かりました。ありがとうございます。

Your answer might help someone💌