Python|slice()関数の使い方

1. はじめに

Pythonでリストや文字列の一部を取り出したいとき、「スライス記法([開始:終了:ステップ])」を使うことは多いですよね。
その背後で使われているのが、slice()関数です。

この記事では、Pythonのslice()関数の使い方を基礎から応用まで丁寧に解説します。
スライス記法との違いや、sliceオブジェクトの使いどころ、よくあるミスにも触れます。

特に以下のような方におすすめです。

  • スライス記法とslice()関数の違いが知りたい
  • sliceオブジェクトを動的に生成したい
  • コードをもっと柔軟・汎用的にしたい

 

2. Pythonのslice()関数とは?基本的な使い方

slice()関数の構文と概要

slice()関数は、スライスオブジェクト(slice object)を作るための関数です。
このオブジェクトをリストや文字列に対して使うことで、部分的な要素の取り出しができます。

slice(start, stop, step)
  • start: 開始位置(省略可能)
  • stop: 終了位置(必須)
  • step: ステップ幅(省略可能)

基本的なコード例

# リストからスライスで一部を取り出す
data = [10, 20, 30, 40, 50, 60]
s = slice(1, 4)  # インデックス1から3まで
print(data[s])

実行結果:

[20, 30, 40]

 

3. Python|slice()関数のよくある使い方・応用例

使い方①:変数でスライスを動的に指定する

ループなどで異なるスライスを動的に使いたいときに便利です。

# スライスを変数で制御
text = "HelloWorld"
start = 2
end = 8
step = 2

s = slice(start, end, step)
print(text[s])

実行結果:

loW

使い方②:複数のスライスを切り替えて使う

あらかじめスライスのパターンを用意しておけば、切り替えも簡単にできます。

data = list(range(10))  # [0, 1, 2, ..., 9]
slices = {
    "前半": slice(0, 5),
    "後半": slice(5, 10),
    "偶数番目": slice(0, 10, 2)
}

print("前半:", data[slices["前半"]])
print("後半:", data[slices["後半"]])
print("偶数番目:", data[slices["偶数番目"]])

実行結果:

前半: [0, 1, 2, 3, 4]
後半: [5, 6, 7, 8, 9]
偶数番目: [0, 2, 4, 6, 8]

使い方③:sliceオブジェクトを使った関数化

sliceを使えば、抽象度の高い処理も関数で簡潔にできます。

def get_slice_part(seq, start, stop, step=1):
    return seq[slice(start, stop, step)]

print(get_slice_part("abcdefg", 1, 6, 2))

実行結果:

bdf

 

4. slice()関数の注意点・よくあるエラー対策

省略可能な引数とデフォルト値

slice関数ではstepstartを省略できますが、stopは省略できません
例えば以下のような書き方はエラーになります。

s = slice()  # 引数なしはNG

実行結果:

TypeError: slice expected at least 1 argument, got 0

stepに0を指定するとエラー

ステップ幅に0を指定すると例外が発生します。

s = slice(0, 5, 0)
[1, 2, 3, 4, 5][s]

実行結果:

ValueError: slice step cannot be zero

スライスの範囲外アクセスはエラーにならない

Pythonのスライスは「安全設計」で、範囲外になっても空のリストや文字列が返ります。

data = [1, 2, 3]
print(data[slice(10, 20)])  # 範囲外でもOK

実行結果:

[]

 

5. まとめ|slice()関数を活用して柔軟なスライス処理を

本記事では、Pythonのslice()関数の使い方について以下の点を学びました。

  • slice()はスライスオブジェクトを生成する関数
  • リストや文字列などに対して柔軟なスライスが可能になる
  • start・stop・stepを使い分けて自在に操作
  • 関数や辞書と組み合わせて汎用的なコードも書ける

slice()関数を使いこなせるようになると、動的・柔軟なデータ操作が可能になります。
特に、実務やデータ処理で条件に応じてスライス範囲を変えたい場合に役立ちます。

学習のコツは、通常のスライス記法とslice()関数の違いを意識しながら、手を動かして試すことです。
ぜひ、日々のPythonコードにslice()を取り入れてみてください。

タイトルとURLをコピーしました