ギコギコはしません!!!! 〜前編〜
一度刃が入ればスゥーーって感じです。
スライスとは文字とかを分解します(早々の結論)
Pythonに限らずほとんどのプログラミング言語には、「スライス」という機能があります。
スライスでは、イテラブルオブジェクトの特定の範囲のものを切り出す作業のことを指します。
はてイテラブルオブジェクト?となった方が大半だと思います。
イテラブルオブジェクトとは「文字列」「バイト列」「配列」「タプル」「セット」型のものを言います。
(タプルとセット以外は)〜〜列とあるように、これらのオブジェクトは列なんです。(多分)
イテラブルオブジェクトとかについては、下の方の記事が参考になると思うので、そちらを参考にしてください。
例えば文字列のn文字目からm文字目まで取り出したいという時に行う作業をスライスと言います。
スライス系ならPythonメーカー!
例文あいうえお
を使って遊びましょう。
Pythonのスライスは、スライスしたいものの後に[はじめ:おわり]
って感じにやります。
そして、コロンは「〜」という意味。なのではじめ〜おわり
って訳なんですね。
まずは、コードと実行結果を見てみましょう。
勘の鋭い方はこれだけで理解されてしまうかもしれません。
>>> 'あいうえお'[0:3]
'あいう'
>>> 'あいうえお'[:4]
'あいうえ'
>>> 'あいうえお'[2:]
'うえお'
>>> 'あいうえお'[3]
'え'
>>> 'あいうえお'[3:10]
'えお'
>>> 'あいうえお'[:-2]
'あいう'
こんな感じです。
3個づつ分けて、前編後編で紹介します。
順番に説明していきますね。
[0:3]
これは、0文字目
〜2文字目
の間を抜き取るという意味です。
ん?となったでしょう。
まずは、0文字目の謎について。
多くの言語では、皆さんが1文字目だと思ってる「あ」が0文字目となります。
「n文字目」というよりも「n個目」というのがさらに近いような気がします。
なので、0スタートで考えてください。
という訳で、簡単な表を作りました。
文字 | 位置 |
---|---|
あ | 0文字目 |
い | 1文字目 |
う | 2文字目 |
え | 3文字目 |
お | 4文字目 |
これを、せめて今日含めて2日間だけは頭に叩き込んでてください。
次に3
なのに2文字目
の謎について
[0:3]
だと、0〜3というような感じの意味になりそうですよね。
実は大きな罠なんです。
[n:m]
は、n文字目の文字から、m-1文字目までの文字
というような意味なんです。
なので、プログラミングとしては0〜3
ですが、人間が理解する上では0〜2
なんです。
となるので、結果としては0文字目から2文字目までの3文字で「あいう」となります。
[:4]
はい。
コロンの前に数字がないですね。
Typoですか!?って思った方!違います!
コロンの前の数字、前数字(勝手に名付けた)がない場合は、そこには「最初」が入ると思ってください。
つまり、最初の文字から4文字目というような感じになります。
ほぼ[0:4]
と同じような意味です。
結果としては、最初の文字から3文字目までの4文字
なので、「あいうえ」となります。
[2:]
おお、今度は後の数字がないですね。
最近数字の誘拐が増えてるらしいので気をつけてくださいね。
コロンの後の数字、後数字がない場合には、そこには「最後」が入ると思ってください。
前にやったやつにすごく似てますよね。
つまり、2文字目から最後の文字までというような感じになります。
この後数字がない場合、[n:m]
はn文字目からm-1文字目
の法則は適応されず、最後の文字までちゃんと入り、結果としては2文字目から最後の文字までで「うえお」となります。
後編へ続く!
あんまり変に量が多すぎると頭に入ってこないです。
私も授業内容は少なければ少ないほど嬉しいですもの。
次回、無限大の刃物 〜後編〜!(コナン風(小並感))
というわけで、今日の記事はここまでです。 もしよろしければ記事へのいいねをして、次回記事をお楽しみに!