Pythonで配列の一部を取り出す「スライス」の方法

Pythonで配列の一部を色々な形で抽出する方法、通称「スライス」のまとめです。
「数値配列の一部分のみの合計値を求めたい」ですとか、「文字列の一部分のみ抽出したい」なんていう時にスライスの記法を知っておくと、簡素かつスマートにソースを書くことができます。

ここでは、一例として、10文字の文字列「ABCDEFGHIJ」を様々な形で部分抽出し、xという変数に格納してみます。

1.n文字目からm文字目を取り出す

試しに、3文字目から5文字目を取り出してみます。

text[a:b]という書き方は、”a文字目の次からb文字目までを抽出する”という意味になります。

2.頭からn文字を取り出す

頭の3文字を取り出してみます。

先ほどのtext[a:b]のaを省略すると、自動的に「0」が入っているものと見なされます。
よって、text[:3]と書けば「0文字目の次から3文字目までを取り出す」という意味になります。

この書き方は、ファイル名の先頭n文字だけ欲しい時などによく使います。

3.n文字以降を取り出す

逆に、頭の3文字を削って、4文字目より後を取り出してみます。

逆にtext[a:b]のbを省略すると、自動的にtextの文字列長が入っているものと見なされます(この場合は10文字なのでb=10)。
よって、text[:b]と書けば「3文字目の次から10文字目までを取り出す」という意味になります。

4.お尻からn文字を取り出す

次はお尻の方から3文字取り出してみます。

text[-a:b]と、aにマイナスを付けると、「textの文字列長-a」と見なされます(この場合は10-3=7)。
よって、text[-3:]と書けば「7文字目の次から10文字目までを取り出す」という意味になります。

ファイル名の拡張子を取得したりする時に便利そうです。

5.配列の偶数番目だけ取り出す

次は少し特殊です。まずは偶数番目だけを取り出してみます。

text[a:b:c]という表記があります。
a,bは今までと同様ですが、こう書くと「a文字目の次からb文字目まで、c文字ごとに取り出す」という意味になります。
そのa,bが省略されている格好ですので、「0文字目の次から、10文字(文字列長)目まで、2文字ごとに取り出す」と解釈され、つまり「偶数番目のみ取り出す」、ということになります。

6.配列の奇数番目だけ取り出す

上記と同様に、こう書けば「0文字目の次から、10文字(文字列長)目まで、2文字ごとに取り出す」と解釈され、これはつまり「奇数番目のみ取り出す」と同義です。

cの部分を変えれば、2つ置き、3つ置き・・・も簡単に書けることになります。

もう1つ、知っておくと役に立ちそうな記法があるのでお伝えします。

7.配列を逆から取り出す

cの部分にマイナスを入れると、お尻から取り出してくれます。
お尻から2つ置きに取得したいのなら、cに-2を入れれば良いわけです。

以上、覚えておいて損のない、Pythonのスライスでした。