📙

Pythonのスライスについて調べた

2023/10/28に公開

Pythonのスライスのインデックスがわかりづらいので実例でまとめてみる。

スライスの構文は配列[始点:終点:ステップ]で始点から終点の範囲でステップに指定した間隔で配列の一部を取り出すことができます。
ステップは省略することができ、省略した場合1が入ります。


今後、始点を赤色、終点を青色とします

スライスの始点と終点のインデックスは文字と文字の間を0,1,2...と数えています。
インデックスは負の値も指定ができ、負の値を指定した場合は後ろから-1,-2,-3...となります。

wordという変数に文字列"Python"を入れたものとしてこの後説明します。

>>> word = "Python"

word[1:4]とした場合ythが表示されます。

>>> word[1:4]
'yth'

word[1:-2]とした時も同じくythが表示されます。
インデックスに正の数と負の数が混合しても問題ありません

>>> word[1:-2]
'yth'

word[:2]のように始点を省略した場合、始点には0が入ります。

>>> word[:2]
'Py'

word[3:]のように終点を省略した場合、終点には文字列のサイズが入ります。

>>> word[3:]
'hon'

word[6:3]のように始点と終点が逆になると範囲になっていないため何も表示されません。

>>> word[6:3]
''

word[::2]のように指定するとステップの間隔で文字が取得されます。


太線同士の間隔がステップで指示した2となります

>>> word[::2]
'Pto'

word[::-1]のようにステップに負の値を指定すると逆向きになります。


読み取り方向の矢印が逆向きになる

ステップに負の値を指定した時の始点のデフォルト値は文字列の長さ、終点のデフォルト値は0とこちらも逆になります。

>>> word[::-1]
'nohtyP'

ステップが-2の時は以下のようになります。

>>> word[::-2]
'nhy'

TODO
  • ステップが負の値の時の始点終点(必要?)
  • インデックスに範囲外を指定した場合

Discussion