読者です 読者をやめる 読者になる 読者になる

As rookie

ルーキーインフラエンジニアがインフラのこと以外も結構書いてしまうブログ

pythonで文字列をスライシング

こんにちは。

最近「はじめてのpython」でpythonの勉強をしています。

Amazon:はじめてのpython

文字列がシーケンス(配列(正確には配列ではない))ということを知り(なんとなく知ってはいた)スライシングをしました。特に特殊なことはしていません。最後に問題があります。

スライシングとはシーケンスの要素xからy(x < y)までを抽出することです。 書き方は

>>> str = 'mojiretu'
>>> str[0:4] #0から4番目を抽出
'moji'
>>> str[4:len(str)] #4から 最後の要素までを抽出
'retu'

今回新たに学んだことは シーケンスの左端がデフォルトでインデックス"0"に対応し、右端がシーケンスの長さを表す数値と同じになるということです。

>>> str[:4] #さきほどと同じ結果
'moji'
>>> str[4:] #さきほどと同じ結果
'retu'
>>> str[:] 両端がデフォルトの値がと対応しているので
'mojiretu'

わけのわからない検証かもしれませんがシーケンス後ろの方の要素を[こっち側に:]それより前の要素を[:こっち側]にして試すと

>>> str = 'mojiretu'

>>> str[-1:2]
''
>>> str[-1:-2]
''

空文字列が帰ってきました。

ちなみにスライシングをして上記のように出力されている文字列は、変数strとは別のオブジェクトが戻されているようです。だから抽出なんですね。

ここで問題です。 上記はスライシングをして文字列を抽出しましたが、「シーケンスの要素番号を指定して抽出する」ことをなんというでしょうか?

>>> str[2]
'j'

こういうことを何というでしょうか。

そうインデクシング(indexing)ですね。そのままですね