Python3の標準入力で空白区切の数字を受け取りたかった話

休日というのに外にも出ずに引きこもっています。朝は7時前に目が覚めて、映画を観て、洗濯をして、お昼ごはんを作って、さぁ昼から何しようかなってとこで昔に触ったことのあるpaizaラーニングとpaizaスキルチェックをやってみたくなった。

スキルチェックっていうのは競技プログラミングみたいに、標準入力からデータを受け取って、それに指定した処理をして出力してくださいっていう問題を解くもの。僕としてはおもしろいなぁと思っている。

数年ぶりのスキルチェックだから、どうやればいいかなって感じで進めてたんだけど…標準入力で空白で区切られた数字の受け取り方がわからない…。

 

0 4 10 43 56

 

みたいな数字をリストに数字として受け取りたいんだけど、その方法がわからなくて頭を悩ませてた。ひねり出した汚いコードがこれ。

 

list1 = map(int, input().split())
list1 = list(list1)

 

1行目でmapオブジェクト作って、2行目でリストにしてる。汚いなぁ、酷いなぁと思いながらも、これを使って提出したら通ったからいいんだけど、なんか気持ち悪くて調べてみたらリスト内包表記が簡潔に書けて便利らしい。

リスト内包表記…なんか難しそうやん…って思ってたら、めっちゃわかりやすいページがあった。

今まであんまり理解できてなかったのが、めっちゃわかりやすく書いてた。で、これを使うとさっきの処理が1つに次のようにまとまる。

 

list1 = [int(i) for i in input().split()]

 

こっちのほうが断然美しいし、断然わかりやすい。input().split()で一旦文字列のリストを作って、それにint()を適用してるのを繰り返してるって感じ。

躓きながらも、これからも学習を続けていきたい。