**slicing(スライス)**は、sequence[start:stop:step] という構文を使ってシーケンス(list、tuple、string)の一部を取り出します。Python で常時使われる、強力で簡潔な機能です。
基本的なスライス
python
nums = [, , , , , ]
nums[:]
nums[:]
nums[:]
nums[:]
重要なルール:start は含み、stop は含みません(nums[1:4] はインデックス 1、2、3 を返し、4 は返しません)。
nums[-1] # 5 — last element
nums[-2] # 4 — second to last
nums[-3:] # [3, 4, 5] — last three elements
nums[:-1] # [0, 1, 2, 3, 4] — everything except the last
nums[::2] # [0, 2, 4] — every 2nd element
nums[1::2] # [1, 3, 5] — every 2nd, starting at index 1
nums[::-1] # [5, 4, 3, 2, 1, 0] — REVERSE the sequence (a famous idiom)
シーケンスを反転する nums[::-1] は、最も見覚えのある Python のイディオムの一つです。
s = "Hello"
s[1:4] # "ell"
s[::-1] # "olleH" — reverse a string
s[0] # "H"
nums = [0, 1, 2, 3, 4]
nums[1:3] = [10, 20, 30] # replace a slice (can change length)
# nums → [0, 10, 20, 30, 3, 4]
nums[10:20] # [] — out-of-range slices return empty, don't crash (unlike nums[10])
単一インデックスのアクセス(IndexError を発生させる)とは異なり、スライスは利用可能な分を穏やかに返します。
スライスは、シーケンスを取り出し、コピーし、反転するための、ユビキタスでまさに Pythonic な機能です。
start:stop:step の構文(特に start は含み・stop は含まない)、負のインデックス(末尾から数える)、反転のイディオム([::-1])、そしてスライスが安全である(範囲外でもクラッシュしない)ことを理解すれば、list や string を簡潔かつ正しく操作できます。
スライスはよくある操作で冗長なループを置き換え、イディオム的な Python コードのいたるところに現れます。