はじめに
Pythonで競技プログラミングする際に
1 | list(map(int, input().split())) |
のようなコードをよく見ると思います。
今回はこのコードの意味について解説します。
利用シーン
このコードは、数値のリストを標準入力から受け取る際に用います。
1 | list(map(int, input().split())) |
例えば、以下のような入力をとると
1 | 3 4 5 |
1 | list(map(int, input().split())) |
数値のリストを得ることが出来ました。
以後も、断りがない限り同じように
1 | 3 4 5 |
を入力とします。
ステップを追って解説
input()
標準入力を文字列として受け取ります。
1 | >>> input() |
input().split()
split
で文字列を区切り文字で分割し、リスト化出来ます。
1 | >>> input().split() |
区切り文字を指定することもできますが、省略すると半角スペース
や改行
で分割されるので、今回は省略しているわけです。
詳細は下記の解説をご参照ください。
Python splitの使い方まとめ
map(int, input().split())
高階関数map
は第一引数の処理を、第二引数のシーケンスの各要素に適用します。
つまり、文字列のリストの各要素を整数のリストに変換しています。
1 | >>> map(int, input().split()) |
何か、奇妙なものが得られました。
これはmapオブジェクトと呼ばれるものです。
これをリストに変換する必要があります。
list(map(int, input().split()))
リストへの変換はlist()
とするだけでOK
1 | >>> list(map(int, input().split())) |
これで整数のリストを得ることが出来ました!
このようにlist(map(...))
の構文はよく利用します。
下記の解説の中ではlamnda
と組み合わせて使ったりもしています。
おわりに
MENTAというサービスでプログラミング学習のサポートをしています。競技プログラミングについてもサポートできるので、ご興味がある方はぜひMENTAのDMでご連絡いただければと思います。