Competitive Programming Academy · レッスン

正しい方法でまとめて出力する

リストにバッファーし、join して高速に出力します

レッスン 3/413 ステップ

「正しい方法でまとめて出力する」はCoddyKit上の無料Competitive Programming Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCompetitive Programming Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Competitive Programming Academyコースには全4レッスンが含まれています。

出力も遅くなる

読み取りと同じように、書き出しも重要です。print()を何千回も呼び出すと、繰り返しフラッシュされ、ひそかに時間制限を消費します。

集めてから出力する

解決策は、まず答えをリストに集め、最後に1回の書き込みでまとめて出力することです。

out = []

各答えを追加する

ループ内では、その場で出力する代わりにappendを使い、各結果をリストに追加します。

out.append(str(answer))

文字列だけを扱う

joinはテキストを対象とするため、保存する前に数値を文字列へ変換するか、joinする時点で変換します。

out.append(str(x))

1つのブロックに結合する

改行を使ってリストをjoinし、各答えがそれぞれの行に出力されるようにします。

result = "\n".join(out)

すべてを一度に出力する

これで、1回のprint(result)ですべての答えをまとめて送れます。小さなprintを何度も呼ぶより、はるかに高速です。

print("\n".join(out))

ジェネレーターでstrを省略する

その場で変換することもできます。generatorでstr()を呼び出し、別の手順を挟まずにjoinへ直接渡します。

print("\n".join(str(x) for x in out))

空白区切りで出力する

値を1行に並べたい場合は、改行の代わりにスペースでjoinして、横に並べて出力します。

print(" ".join(map(str, row)))

さらに高速にするならsys.stdout

最速の出力が必要なら、sys.stdout.writeで直接書き込みます。print()のフォーマット処理を省略できます。

import sys
sys.stdout.write(result)

末尾の改行を忘れない

sys.stdout.writeは改行を追加しないため、ジャッジが改行を求める場合は自分で改行を追加します。

sys.stdout.write(result + "\n")

少数のprintなら問題ない場合

1行か2行しか出力しないなら、通常のprint()で問題ありません。答えの数が多い場合だけまとめて出力しましょう。

確認問題

なぜ出力をバッファリングするのでしょうか?

まとめ:出力をまとめる

答えをリストにバッファリングし、1回のjoinとprintで出力する方法を学びました。高速な入力と同じ考え方を、出力側に適用したものです。🖨️

無料で開始

AI チューターと学ぶ Python — 無料

ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。

コース
30
レッスン
120

よくある質問

「正しい方法でまとめて出力する」レッスンは無料ですか?

はい。「正しい方法でまとめて出力する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Competitive Programming Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Competitive Programming Academyコースには全4レッスンが含まれています。

「正しい方法でまとめて出力する」で何を学びますか?

リストにバッファーし、join して高速に出力します ブラウザで直接実行するハンズオンコードでCompetitive Programming Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Competitive Programming Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのCompetitive Programming Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「正しい方法でまとめて出力する」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このCompetitive Programming Academyレッスンでコードを書いて実行できますか?

はい。すべてのCompetitive Programming Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. input() と sys.stdin の対決
  2. 1 行に並んだ複数の数値を解析する
  3. 正しい方法でまとめて出力する
  4. N 行の読み込みとエッジケース
← Competitive Programming Academyに戻る