CP のためのリスト、インデックス、スライス
off-by-one を避けてアクセス、スライス、反転を行います
「CP のためのリスト、インデックス、スライス」はCoddyKit上の無料Competitive Programming Academyレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCompetitive Programming Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Competitive Programming Academyコースには全4レッスンが含まれています。
コンテストの定番データ構造
競技プログラミングの Python では、list が定番の配列です。要素を順番に保持し、必要に応じて大きくなるため、多くの問題はここから始めます。
a = [4, 1, 7, 3]0 から始まるインデックス
リストは0 始まりのインデックスを使うため、a[0] が最初の要素です。これを忘れると、簡単な得点を失う典型的な境界ずれバグになります。
a = [4, 1, 7, 3]
print(a[0]) # 4後ろから末尾に到達する
負のインデックスは右端から数えるため、a[-1] が最後の要素です。自分で len(a) - 1 を計算する必要はありません。
a = [4, 1, 7, 3]
print(a[-1]) # 3長さはいくつ?
len(a)を使うと要素数を取得できます。有効なインデックスは 0 から len(a) - 1 までで、それより先は使えません。
a = [4, 1, 7, 3]
print(len(a)) # 4スライスを取り出す
スライス a[i:j] は、インデックス i から j の直前までの要素を取り出します。右端は常に含まれません。
a = [4, 1, 7, 3]
print(a[1:3]) # [1, 7]終端を省略したスライス
片側を空欄にすると、リストの端までを指定できます。a[:k] は最初の k 個を、a[k:] は k 以降のすべての要素を取り出します。
a = [4, 1, 7, 3]
print(a[:2], a[2:])刻み幅で要素を選ぶ
3つ目の数値はステップです。a[::2] は2つおきに要素を取り出すため、偶数位置と奇数位置に分けるときに便利です。
a = [4, 1, 7, 3]
print(a[::2]) # [4, 7]一度に反転する
ステップを -1 にするとリストが反転します。a[::-1] は元のリストを変更せずに反転したコピーを作るため、回文の判定などに便利です。
a = [4, 1, 7, 3]
print(a[::-1]) # [3, 7, 1, 4]スライスはコピーを作る
スライスは新しいリストを返すため、a[:] は手軽な浅いコピーになります。コピーを編集しても、元の配列は変わりません。
b = a[:]
b[0] = 99 # a is untouched安全な境界チェックでクラッシュを防ぐ
a[len(a)] を読み込むと IndexError が発生し、即座に実行時エラーになります。インデックスがリストの範囲内にあることを必ず確認してください。
if i < len(a):
use(a[i])スライスではクラッシュしない
インデックスとは異なり、範囲外のスライスは柔軟に処理されます。a[2:99] は存在する要素だけを返すため、末尾で静かに切り詰められます。
a = [4, 1, 7, 3]
print(a[2:99]) # [7, 3]確認問題
小さなリストでスライスの感覚を試してみましょう。
復習:リストを使いこなす
両端からのインデックス指定、範囲のスライス、ステップ指定、そして安全な反転ができるようになりました。これらのリストの基本は、これから取り組むすべての配列問題の土台です。🚀
よくある質問
「CP のためのリスト、インデックス、スライス」レッスンは無料ですか?
はい。「CP のためのリスト、インデックス、スライス」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Competitive Programming Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Competitive Programming Academyコースには全4レッスンが含まれています。
「CP のためのリスト、インデックス、スライス」で何を学びますか?
off-by-one を避けてアクセス、スライス、反転を行います ブラウザで直接実行するハンズオンコードでCompetitive Programming Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Competitive Programming Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCompetitive Programming Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「CP のためのリスト、インデックス、スライス」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCompetitive Programming Academyレッスンでコードを書いて実行できますか?
はい。すべてのCompetitive Programming Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- CP のためのリスト、インデックス、スライス
- 内包表記で配列を高速に作る
- Min、Max、Sum、累積合計
- 値だけでなくインデックスを見つける