【Python】文字列スライス時のオフセットの指定方法
概要
Pythonで文字列を操作する際に毎回オフセット値の指定方法が良くわからなくなるため、検証して整理しました。
Python3系の前提です。
検証用文字列
以下を定義します。
s = '123456789'
スライスの基本
基本は以下のようになります。
s[start : end : step]
startに設定したオフセットの値から抽出される
end に設定した オフセットの一つ前の値までが抽出される
stepに設定した値おきにスライスされる
初級:部分的なスライス
先頭文字を取り出し
s[0]
> '1'
末尾を取り出し
s[8]
> '9'
s[-1]
> '9'
文字列全体を取り出し
s[:]
> '123456789'
s[0:]
> '123456789'
s[:9]
> '123456789'
s[0:9]
> '123456789'
末尾から一つ前までを取り出し
strtest[:8]
> '12345678'
strtest[:-1]
> '12345678'
s[0:-1]
> '12345678'
中級:ステップによるスライス
1ステップで文全体を取り出し
s[0::]
> '123456789'
s[0::1]
> '123456789'
s[1:9:1]
> '123456789'
一文字毎に文全体を取り出し
s[::2]
>'13579'
s[0::2]
>'13579'
s[0:9:2]
>'13579'
s[:9:2]
>'13579'
上級:マイナスステップによるスライス
末尾から先頭に向かって取り出し
s[::-1]
>'987654321'
これも同じですが、スタートの指定の仕方が分かりにくい
s[8::-1]
>'987654321'
イメージとしてはこうです。
endに0を設定すると以下のようになります。
s[8:0:-1]
>'98765432'
これは次のようなイメージ
endに2を設定し、stepに-2を設定すると以下のようになります。
s[8:0:-1]
>'98765432'
これは以下のようなイメージ
まとめ
特にマイナスステップの挙動がいまいち理解できていなかったが、何となくイメージはつかめた。