学習用記事Pythonで配列の一部を取り出す「スライス」の方法Pythonで配列の一部を色々な形で抽出する方法、通称「スライス」のまとめです。「数値配列の一部分のみの合計値を求めたい」ですとか、「文字列の一部分のみ抽出したい」なんていう時にスライスの記法を知っておくと、簡素かつスマートにソースを書くことができます。ここでは、一例として、10文字の文字列「ABCDEFGHIJ」を様々な形で部分抽出し、xという変数に格納してみます。目次1.n文字目からm文字目を取り出す2.頭からn文字を取り出す3.n文字以降を取り出す4.お尻からn文字を取り出す5.配列の偶数番目だけ取り出す6.配列の奇数番目だけ取り出す7.配列を逆から取り出す1.n文字目からm文字目を取り出す試しに、3文字目から5文字目を取り出してみます。text[2:5]print(x)↓ResultShell1CDEtext[a:b]という書き方は、”a文字目の次からb文字目までを抽出する”という意味になります。2.頭からn文字を取り出す頭の3文字を取り出してみます。text[:3]print(x)↓ResultShell1ABC先ほどのtext[a:b]のaを省略すると、自動的に「0」が入っているものと見なされます。よって、text[:3]と書けば「0文字目の次から3文字目までを取り出す」という意味になります。この書き方は、ファイル名の先頭n文字だけ欲しい時などによく使います。3.n文字以降を取り出す逆に、頭の3文字を削って、4文字目より後を取り出してみます。text[3:]print(x)↓ResultShell1DEFGHIJ逆にtext[a:b]のbを省略すると、自動的にtextの文字列長が入っているものと見なされます(この場合は10文字なのでb=10)。よって、text[:b]と書けば「3文字目の次から10文字目までを取り出す」という意味になります。4.お尻からn文字を取り出す次はお尻の方から3文字取り出してみます。text[-3:]print(x)↓ResultShell1HIJtext[-a:b]と、aにマイナスを付けると、「textの文字列長-a」と見なされます(この場合は10-3=7)。よって、text[-3:]と書けば「7文字目の次から10文字目までを取り出す」という意味になります。ファイル名の拡張子を取得したりする時に便利そうです。5.配列の偶数番目だけ取り出す次は少し特殊です。数番目だけを取り出してみます。text[::2]print(x)↓ResultShell1BDFHJtext[a:b:c]という表記があります。a,bは今までと同様ですが、こう書くと「a文字目の次からb文字目まで、c文字ごとに取り出す」という意味になります。そのa,bが省略されている格好ですので、「0文字目の次から、10文字(文字列長)目まで、2文字ごとに取り出す」と解釈され、つまり「偶数番目のみ取り出す」、ということになります。text[1::2]print(x)↓ResultShell1ACEGI上記と同様に、こう書けば「0文字目の次から、10文字(文字列長)目まで、2文字ごとに取り出す」と解釈され、これはつまり「奇数番目のみ取り出す」と同義です。cの部分を変えれば、2つ置き、3つ置き・・・も簡単に書けることになります。1つ、知っておくと役に立ちそうな記法があるのでお伝えします。text[::-1]print(x)↓ResultShell1JIHGFEDCBAcの部分にマイナスを入れると、お尻から取り出してくれます。お尻から2つ置きに取得したいのなら、cに-2を入れれば良いわけです。以上、覚えておいて損のない、Pythonのスライスでした。読み物お役立ちツールホームお問い合わせ。