プログラミングの用語一覧へ
このページの目次

スライスとは?

読み方:スライス

最終更新:2026/08/18

3秒でわかる

並びの一部を範囲で指定して切り出す書き方。開始と終了の位置を渡すだけで、ループも添字の管理も書かずに部分列を取り出せます。

もう少し詳しく

どういうものか

スライスは、リストや文字列のような順序を持つデータから、指定した範囲を取り出す記法です。Python では lst[start:stop:step] と書き、start を含み stop を含まない範囲が返ります。

省略もできます。lst[:3] は先頭から 3 個、lst[2:] は 3 番目以降、lst[:] は全体の複製です。負の数を使うと末尾から数えるので、lst[-2:] は末尾 2 個になります。

なぜ必要か

範囲を扱う処理を、ループと添字の管理なしで書けます。添字を自分で回すと、境界を 1 つ間違えて範囲外にする誤りが起きますが、スライスは範囲外を指定しても例外を出さず、あるところまでを返します。

意図も読み取りやすくなります。text[:100] は「先頭 100 文字」とそのまま読め、ループの中身を追う必要がありません。

具体例

nums = [10, 20, 30, 40, 50] print(nums[1:4]) # [20, 30, 40] 1番目から3番目まで print(nums[:2]) # [10, 20] print(nums[-2:]) # [40, 50] print(nums[::2]) # [10, 30, 50] 1つ飛ばし print(nums[::-1]) # [50, 40, 30, 20, 10] 逆順 text = "2026-08-14" print(text[:4]) # 2026 print(text[5:7]) # 08

ページ送りにもそのまま使えます。

def page(items, page_no, per_page=20): start = (page_no - 1) * per_page return items[start:start + per_page]

つまずきやすいところ

終了位置が含まれない点を忘れると、毎回 1 個足りない結果になります。nums[1:4] は 4 番目を含みません。「差が個数になる」と覚えると計算しやすく、1 から 4 なら 3 個です。

複製の深さも誤解されがちです。copy = nums[:] は新しいリストを作りますが、中身が入れ子のリストなら内側は共有されたままです。内側まで独立させるには copy.deepcopy が要ります。

言語による違いも押さえておく必要があります。JavaScriptslice(1, 4) は Python と同じく終端を含みませんが、Go のスライスは元の配列と領域を共有するため、切り出した側を書き換えると元も変わります。同じ名前でも性質が違います。

覚え方

「後ろは含まない」。開始と終了の差がそのまま個数です。

知識のつながり

サイドバーと同じ推奨ルート・関連語を、まとめて確認できます。

現在地スライスプログラミング

LEARN BY DOING

この用語を、教材で使ってみる

直接関連する編と、その編を含むコースです。用語だけで終わらず、ブラウザ上で実際に手を動かせます。

この用語を扱うコース

コース

Python入門:基礎文法編

74レッスン
コース

Python中級 内包表記・高階関数・クラス入門

58レッスン
コース

Go入門

66レッスン
Pythonコースの全編を見る