Pythonでsliceの使い方と書き方について解説【図解】

しんぺい

こんにちは!しんぺいです。

Pythonには「slice(スライス)」と呼ばれる便利な機能がありますが、Python初心者、プログラミング初心者にとっては少々難しい内容でもあります。

今回はそんな便利なsliceの使い方と書き方を、サンプルを交えて解説します!

Pythonのslice(スライス)ってなに?

slice(スライス)は、文字列やタプル、リストなどの特定のオブジェクトから一部を切り出す時に使うものです。

スライスの書き方は、以下の通りになります。

[start:end:step]

とっても分かりづらいので、例を見てみましょう!

[ : ]

[:]を使うと、対象オブジェクトの全体を取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[:])
print(sample[:])

=============================

[1, 5, 10, 4, 8, 22, 111, 63, 23]
abcdefghijklmnopqrstuvwxyz

[start : ]

プラスで指定

[start:]を使うと、対象オブジェクトのオフセット(指定した場所)から、末尾までを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[2:])
print(sample[9:])

=============================

[10, 4, 8, 22, 111, 63, 23]
jklmnopqrstuvwxyz

マイナスで指定

[-start:]を使うと、対象オブジェクトの末尾から、「-start分」を取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[-2:])
print(sample[-9:])

=============================

[63, 23]
rstuvwxyz

[ : end]

プラスで指定

[:end]を使うと、対象オブジェクトの先頭から「end-1」のオフセット(指定した場所)までを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[:2])
print(sample[:9])

=============================

[1, 5]
abcdefghi

マイナスで指定

[:-end]を使うと、対象オブジェクトの末尾から「-end」分を除く全てを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[:-2])
print(sample[:-9])

=============================

[1, 5, 10, 4, 8, 22, 111]
abcdefghijklmnopq

[start : end]

プラスで指定

[start:end]を使うと、対象オブジェクトの「start」オフセットから「end-1」のオフセットまでを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[2:5])
print(sample[3:9])

=============================

[10, 4, 8]
defghi

プラスとマイナスで指定

[start:-end]を使うと、対象オブジェクトの「start」オフセットから、末尾から「-end」を除く全てを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[2:-5])
print(sample[3:-9])

=============================

[10, 4]
defghijklmnopq

マイナスで指定

[-start:-end]を使うと、対象オブジェクトの末尾からの「start」オフセットから、末尾から「-end-1」の間全てを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[-6:-2])
print(sample[-8:-4])

=============================

[4, 8, 22, 111]
stuv

[start : end : step]

プラスで指定

[start:end:step]を使うと、対象オブジェクトの「start」オフセットから「end-1」のオフセットまでを、「stepごと」に取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[1:8:2])
print(sample[3:22:3])

=============================

[5, 4, 22, 63]
dgjmpsv

プラスとマイナスで指定

[start:-end:step]を使うと、対象オブジェクトの「start」オフセットから、末尾から「-end」を除く全体を、「stepごと」に取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[1:-2:2])
print(sample[3:-4:3])

=============================

[5, 4, 22]
dgjmpsv

マイナスで指定

[-start:-end:step]を使うと、対象オブジェクトの末尾からの「start」オフセットから、末尾から「-end-1」の間全てを、「stepごと」に取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[-6:-2:2])
print(sample[-14:-4:3])

=============================

[4, 22]
mpsv

[ : : step]

プラスで指定

[::step]を使うと、対象オブジェクトから「stepごと」に、全てを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[::3])
print(sample[::6])

=============================

[1, 4, 111]
agmsy

マイナスで指定

[::-step]を使うと、対象オブジェクトから「stepごと」に、逆順に全てを取得できます。

num_list = [1, 5, 10, 4, 8, 22, 111, 63, 23]
sample = "abcdefghijklmnopqrstuvwxyz"

print(num_list[::-3])
print(sample[::-6])

=============================

[23, 22, 10]
ztnhb

しんぺい

初心者にとってはちょっととっつきにくいPythonのslice(スライス)ですが、活用できるようになれば非常に強力です。

ぜひ習得してsliceを自在に扱いましょう!