インフラ構築奮闘記コンテンツへスキップインフラ構築奮闘記LinuxやCiscoルーターなどの学習を行った備忘録です。標準入力から値を受け取るときに使うinput()。今まで僕も普通にこれを使ってきたんですが、このinput()関数が、意外と時間がかかるみたいです。実行時間が、最大5秒近くかかっていました。実行時間1秒以内でクリアしてる人がいたので、どんなコードなのか見てみたところ、(他人の提出コードも見れる。)←これいいinput()関数は使っていなくて、sys.stdinを使っているんですよね。実行時間が、最大でも1秒ちょっとに縮まりました。それくらいになると結構効いてくるようです。いうわけで、input()関数とsys.stdinの違い。気づいた範囲でまとめます。入力行数がわからないときsys.stdinの時は、入力行数がわからなくても困りません。下記のような入力データを読み取って、そのまま1行ずつ出力する場合。test1test2test3test4test5sys.stdinを使えばこれだけでOK。入力行数が与えられることがほとんどなので、あんまりめんどくさくはならないです。末尾の改行コードが入ったままのようです。rstrip()を付けなかった場合にはこうなります。文字列sに含まれる改行コードもあるため、2行ずつ改行されてしまっています。出力や計算に影響がある場合は、この改行コードへの対策が必要。rstrip()が確実ではあるが、これはこれでそれなりに時間がかかる。スライスを使うと速い。数字の部分だけを抜き出すこともできる。行末に改行が入っていることが前提。入力データの最終行に改行がないとこうなる。書いてなければ注意が必要かもしれません。s)だと、rstrip()を使うよりは速いっぽいです。改行コードが”\n”でいいかわからないので、これはこれで危険かもですね。コメントをキャンセルメールアドレスが公開されることはありません。