スライス機能は他のプログラミング言語にはない場合も多いため、ご存知ない方も多いのではないでしょうか。
スライスが使えるようになると、配列や文字列の一部をたった一行のコードで切り取ることが可能です。
本記事ではPythonでスライスを使う方法について解説します。
スライスとは?
スライスとは配列や文字列などの一部を切り取ることができるPythonの機能です。
文字通り配列などをスライスできるということです。
スライスは以下のように記述するのが基本となります。
{配列名}[start : stop]
最初(start)と最後(stop)を配列に指定することで、配列のその部分を切り取ることが可能です。
Pythonでスライスを使う方法
Pythonでスライスを使う方法について解説します。
以下の手順に基づいて説明していきましょう。
- 後を指定する
- 最初を指定する
- 最初と最後を指定する
- 後ろから数えて指定する
- 飛ばしを行うように指定する
- 逆順になるように指定する
なお、Pythonの配列が分からないという方は本記事よりも先に【入門編5】Pythonでリスト(複数データ)を追加・削除してみようを読んでいただけると幸いです。
1)最後を指定する
最初に「配列のどこまでを取得するか」を指定する方法についてみていきましょう。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[:3])
○実行結果
上記のコードでは配列list_testに対してスライス機能が使われています。
[:3]と記述することで、インデックスが3番以前の要素を取り出すことが可能です。
つまりインデックスが0、1、2番のものを取り出すということです。
インデックスは1からではなく0からカウントする点は注意しましょう。
これがスライスの基本的な使い方となります。
2)最初を指定する
続いて、「どこから配列を取得するか」についてみていきましょう。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[3:])
○実行結果
さきほどとは逆に「:」の左側に数値を指定しています。
こうすることでインデックス番号が3番からの要素を取り出すことが可能です。
3)最初と最後を指定する
続いて、スライスで最初と最後を指定して要素を抜き出す方法をみていきましょう。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[3:5])
○実行結果
上記のコードではstartを「3」、stopを「5」に指定しています。
こうすることでインデックス番号が3番から5番までの要素を取り出すことが可能です。
4)後ろから数えて指定する
スライスでは負の数を指定することで、後ろからインデックス番号を数えて、要素を抜き出すことが可能です。
例をみていきましょう。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[-1])
print(list_test[-5:-1])
○実行結果
[-5:-1]のように指定することで、後ろから数えて5番から1番までの要素を取り出すことが可能です。
後ろから数える場合は、0からではなく1からカウントする点にも注意しましょう。
このように、スライス機能に負の数を指定することで、後ろから数えて指定できます。
また、「-1」を指定することで配列の末尾を取得することも可能です。
5)飛ばしを行うように指定する
これまでスライスに2つの数値を記入することで、「どこからどこまでの要素を抜き出すか」を指定することができました。
スライスではもう1つ数値を記入することで、要素を飛ばし飛ばしに抜き出すことが可能です。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[3:8])
print(list_test[3:8:2])
○実行結果
上記のコードでは[3:8:2]と記入することで「3番から8番までの要素を1つ飛ばし」で取得しています。
このように3つ目の数値を記入することで、要素を飛ばし飛ばしに取得することが可能です。
3つ目に「3」を記入すれば、もちろん2つ飛ばしで取得することができます。
6)逆順になるように指定する
スライス機能を応用することで、配列の要素を逆順にすることもできます。
○コード例
list_test = [2,4,6,8,10,12,14,16,18,20]
print(list_test[::-1])
○実行結果
上記のように3つ目に「-1」を指定し、他には何も指定しなければ、配列の最初から最後までを逆順で取得することができます。
多次元配列でスライスを使うには?
スライスでは多次元配列に対しても同じように要素を抜き出すことができます。
○コード例
list_test = [[2,4,6],[8,10,12]]
print(list_test[0][1:2])
print(list_test[1][1:2])
○実行結果
2次元配列に対してスライスを行う場合、配列の行を指定する必要があります。
上記のコードでは、[0]とすることで0番目の行に対してスライスを行い、[1]とすることで1番目の行に対してスライスを行っています。
文字列をスライスで切り抜くこともできる
ここまでスライスで配列の要素を抜き出す方法について解説しました。
スライスは配列だけでなく、文字列に対しても使うことが可能です。
文字列に対して使う例をみていきましょう。
○コード例
str_test = "HelloWorld"
print(str_test[2:5])
○実行結果
上記の例では「HelloWorld」の2番目から5番目までの文字のみを抜き出しています。
0から数えると2番目から5番目までの文字は「llo」となります。
まとめ
本記事ではPythonでスライスを使う方法について解説しました。
スライスを使うことで配列操作を素早く行うことが可能です。
配列から要素を抜き出す際にわざわざforループなどを使わなくても、少ない行数で表現することが可能です。
ソースコードの可読性が一気に向上するのでぜひ使ってみてください。