Python でリストをスライスする方法 (インデックス、ステップ、反転)
強力な括弧構文を使用して Python でリストをスライスする方法を学びます。開始、停止、およびステップ引数、負のインデックス付け、リストの反転をマスターします。
概要
スライスは Python の最も直感的で強力な機能の 1 つで、リスト、タプル、または文字列のサブセットをクリーンで簡潔な構文で抽出できます。リストから特定の要素をコピーするための詳細なループを作成する代わりに、Python のスライス表記を使用すると、角括弧内にインデックスの範囲を指定できます。
リスト スライスの完全な構文は `my_list[start:stop:step]` です。 「start」インデックスは包括的で、「stop」インデックスは排他的で、「step」は要素間の増分を定義します(デフォルトは 1)。 「start」を省略した場合、Python はデフォルトでリストの先頭を設定します。 「stop」を省略した場合、Python はデフォルトでリストの最後に移動します。これにより、コレクションの一部の抽出が非常に表現力豊かになります。
スライスは負のインデックスもサポートしているため、非常に多用途です。負の開始インデックスまたは終了インデックスは、リストの末尾から逆方向にカウントします (`-1` は最後の項目を表します)。 `my_list[::-1]` などの負のステップ値を設定すると、リストの逆コピーをすばやく取得できます。クリーンなデータ抽出には、スライス範囲を理解することが不可欠です。
コードと実行の出力
このスクリプトは、さまざまな開始、停止、ステップ範囲、負のインデックス付け、およびリストの反転を使用したリストのスライスを示します。
numbers = [0, 10, 20, 30, 40, 50, 60, 70, 80]
# 1. Basic slicing: elements from index 2 up to (but excluding) 6
subset = numbers[2:6]
print("Subset [2:6]:", subset)
# 2. Omitting indices: start to index 4, and index 5 to end
first_five = numbers[:5]
last_four = numbers[5:]
print("First five [:5]:", first_five)
print("Last four [5:]:", last_four)
# 3. Using a step parameter: get every second element
every_second = numbers[::2]
print("Every second [::2]:", every_second)
# 4. Negative indexing: get the last three elements
last_three = numbers[-3:]
print("Last three [-3:]:", last_three)
# 5. Reverse the list using step=-1
reversed_numbers = numbers[::-1]
print("Reversed list [::-1]:", reversed_numbers)Subset [2:6]: [20, 30, 40, 50]
First five [:5]: [0, 10, 20, 30, 40]
Last four [5:]: [50, 60, 70, 80]
Every second [::2]: [0, 20, 40, 60, 80]
Last three [-3:]: [60, 70, 80]
Reversed list [::-1]: [80, 70, 60, 50, 40, 30, 20, 10, 0]段階的な実装
- list[start:stop] を使用して、インデックス start から stop まで (stop は含まない) の要素を抽出します。
- リストの境界からスライスするには、開始インデックスまたは終了インデックス (list[:4] または list[4:] など) を省略します。
- 要素を一定の間隔でスキップするには、括弧 list[::step] 内に 3 番目の引数を渡します。
- コレクションの最後から要素を逆方向にカウントするには、負のインデックスを使用します。
よくある質問
スライスすると元のリストが変更されますか?
いいえ、リストのスライスでは、要求された範囲の浅いコピーが返され、元のリストは完全に変更されません。
スライス インデックスが範囲外の場合はどうなりますか?
IndexError が発生する単一のインデックスへのアクセスとは異なり、スライスは寛容であり、単純にリストの境界で範囲をキャップし、範囲内に要素が含まれない場合は空のリストを返します。
関連トピック
推奨される Python リソース
関連するインタラクティブなチュートリアル、チートシート、コード比較で知識を深めてください。
Python の変数とデータ型の説明
Python 変数と主要なデータ型 (文字列、整数、浮動小数点数、ブール値) を理解します。 Python でのメモリ割り当ての完全な初心者ガイド。
Python リスト メソッドのチートシート
Python のリスト操作のクイック リファレンス ガイド。要素の追加、挿入、削除、並べ替え、スライスをマスターします。
Python と JavaScript: どちらのプログラミング言語が最適ですか?
Python と JavaScript の包括的な比較。構文の違い、パフォーマンス、使用例 (バックエンドとフロントエンド)、およびコーディング例を調べます。