1 行に並んだ複数の数値を解析する
分割し、int に map し、きれいにアンパックします
「1 行に並んだ複数の数値を解析する」はCoddyKit上の無料Competitive Programming Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCompetitive Programming Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Competitive Programming Academyコースには全4レッスンが含まれています。
1行に複数の数値
コンテストでは、「3 7 1 9」のように、複数の値が1行に並ぶことがよくあります。その文字列を使える数値に変換するのが目的です。
スペースで分割する
まず.split()を使います。引数なしで呼び出すと、任意の空白で行を分割し、文字列の断片からなるリストを返します。
parts = input().split()まだ数値ではなく文字列
split()の後も、各要素は文字列のままです。「7」と7は同じではないため、まだ計算には使えません。
1つの要素を変換する
要素をint()で囲むと、整数に変換できます。数値として必要な各トークンに対してこれを行います。
x = int("42")mapですべて変換する
ループの代わりにmap(int, ...)を使うと、各要素にint()を一度に適用できます。遅延評価されるため高速です。
nums = map(int, input().split())リストにする
mapは遅延評価されるオブジェクトを返します。インデックス参照、スライス、再利用が必要な場合はlist()で囲みましょう。
nums = list(map(int, input().split()))決まった個数をアンパックする
値の個数が正確にわかっている場合は、1行でアンパックして名前付き変数に直接代入できます。
a, b = map(int, input().split())3個以上の値
アンパックは自然に拡張できます。3つの数値を読む場合は、等号の左側に3つの名前を置くだけです。
a, b, c = map(int, input().split())必要なら浮動小数点数にする
値が小数なら、mapのintをfloatに置き換えます。それ以外は同じです。
vals = list(map(float, input().split()))スターで残りを受け取る
アスタリスク付きの名前を使うと、先頭の個数を受け取り、残りの数値をリストにまとめられます。
n, *arr = map(int, input().split())すぐに合計する
mapは反復可能なので、リストを作らずにsum()へ直接渡せます。
total = sum(map(int, input().split()))確認問題
この1行のコードは何を生成しますか?
まとめ:1行を解析する
覚えておきたい組み合わせはmap(int, input().split())です。トークンに分割し、それぞれを数値に変換してから、問題に応じてリスト化またはアンパックします。🔢
よくある質問
「1 行に並んだ複数の数値を解析する」レッスンは無料ですか?
はい。「1 行に並んだ複数の数値を解析する」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Competitive Programming Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Competitive Programming Academyコースには全4レッスンが含まれています。
「1 行に並んだ複数の数値を解析する」で何を学びますか?
分割し、int に map し、きれいにアンパックします ブラウザで直接実行するハンズオンコードでCompetitive Programming Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Competitive Programming Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCompetitive Programming Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「1 行に並んだ複数の数値を解析する」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCompetitive Programming Academyレッスンでコードを書いて実行できますか?
はい。すべてのCompetitive Programming Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- input() と sys.stdin の対決
- 1 行に並んだ複数の数値を解析する
- 正しい方法でまとめて出力する
- N 行の読み込みとエッジケース