Python基礎編:スライス

今回は、Pythonにおけるリストやタプル、文字列で使える「スライス」と呼ばれるやり方を紹介したいと思います。
スライスとは
スライスとは、シーケンス型オブジェクトの中から、インデックスで指定した範囲を、新しいリストの形で返してくれる仕組みのことです。
シーケンス型オブジェクトとは、複数の値を順番に並べたものをひとまとめにしたもののことです。基本的なシーケンス型には、
- リスト
- タプル
- range
- 文字列
があります。復習として、それぞれの型を見ていきましょう。
リスト list = ['りんご','いちご','ばなな','ぶどう']
タプル tuple = ('北海道','青森','秋田','山形','岩手')
range range(10)
文字列 ('Hello Python')
リストやタプルは分かりやすいと思いますが、rangeや文字列はちょっと分かりにくいですよね。range(10)というのは(0,1,2,3,4,5,6,7,8,9)のことなので、数字を順番通りにひとまとめにしていると思えば理解できると思います。同じように文字列は、(H,e,l,l,o,P,y,t,h,o,n)と11個の文字のをひとまとめにしていると考えればよいのです。
このようなシーケンスの型から、どこからどこまでを取り出すという指定をしてあげて、指定したところをリストとして返してくれることをスライスというのです。なんとなくイメージがついたでしょうか。では、さっそく実践してみましょう。
スライスで指定した範囲の要素を取り出す
スライスで要素を取り出す方法には基本的なものとして
- 開始位置と終了位置を指定する
- 開始位置のみを指定する
- 終了位置のみを指定する
- 負の数を指定する
- ステップを指定する
の4つがあります。スライスの基本的な出力の仕方は
print(シーケンス名[開始位置:終了位置]
となっています。リストやタプルで紹介したように、リストなどの初めの要素はインデックス番号は「0」となっているので、その番号に合わせることに注意してください。
開始位置と終了位置を指定する
岩手から秋田までを出力したい場合には、岩手のインデックス番号である「2」を初めに指定します。そしてコロンのあとに、終了位置を指定しますが、この時に気を付けてほしいのが、指定したい最後のインデックス番号ではダメということです。終了位置は、指定する最後のインデックス番号「+1」のインデックス番号を書くように気を付けましょう。
なので、今回は秋田までを取り出したいので、秋田のインデックス番号4に「+1」をして終了位置は「5」とします。すると、出力結果には[‘岩手’, ‘宮城’, ‘秋田’]と表示されました。
開始位置のみを指定する
指定したところから最後の要素までを取り出したいときには、上記の終了位置を指定してコードを書くこともできますが、要素数が多くなってくると、最後の要素まで数えたり、最後は何番だっけと思い出さないといけないこともでてくると思います。
その時には、終了位置を省略することができます。コードは、
print(シーケンス名[開始位置:]
と、コロンの後ろを省略することができます。
終了位置のみを指定する
先ほどとは逆で、初めから、途中の要素までを取り出したいときもあるはずです。その時には次のように、開始位置を省略して書くことができます。
print(シーケンス名[:終了位置]
負の数を指定する
今までは、正の数で開始位置や終了位置を指定してきましたが、負の数「-1」などを指定することもできます。負の数を指定すると、末尾から数えて取り出すことができます。コードの書き方は正の数のときと同じです。
ステップを指定する
スライスには「ステップ」と呼ばれる便利な機能もあります。今までのコードの後ろにコロンを付け加えて、そのあとに数字を入れると、その数だけとばして取り出すことができるのです。コードは以下の通りです。
- 基本的な書き方…print(シーケンス名[開始位置:終了位置:ステップ数]
- 開始位置、終了位置を省略…print(シーケンス名[::ステップ数]
- 開始位置を省略…print(シーケンス名[:終了位置:ステップ数]
- 終了位置を省略…print(シーケンス名[開始位置::ステップ数]
いかがですか、このスライスという便利な機能を知っていれば、どこかで役に立つはずです。いろいろなスライスのやり方を覚えておきましょう。
あなたにオススメの記事