LoginSignup
1
1

More than 1 year has passed since last update.

【15日目】ギコギコしなさそうなスライサー! ~前編~【PythonでDiscordBOTを作ろう!】

Last updated at Posted at 2022-12-14

ギコギコはしません!!!! 〜前編〜

一度刃が入ればスゥーーって感じです。

スライスとは文字とかを分解します(早々の結論)

Pythonに限らずほとんどのプログラミング言語には、「スライス」という機能があります。
スライスでは、イテラブルオブジェクトの特定の範囲のものを切り出す作業のことを指します。

はてイテラブルオブジェクト?となった方が大半だと思います。
イテラブルオブジェクトとは「文字列」「バイト列」「配列」「タプル」「セット」型のものを言います。
(タプルとセット以外は)〜〜列とあるように、これらのオブジェクトは列なんです。(多分)

イテラブルオブジェクトとかについては、下の方の記事が参考になると思うので、そちらを参考にしてください。

例えば文字列のn文字目からm文字目まで取り出したいという時に行う作業をスライスと言います。

スライス系ならPythonメーカー!

例文あいうえおを使って遊びましょう。

Pythonのスライスは、スライスしたいものの後に[はじめ:おわり]って感じにやります。
そして、コロンは「〜」という意味。なのではじめ〜おわりって訳なんですね。

まずは、コードと実行結果を見てみましょう。
勘の鋭い方はこれだけで理解されてしまうかもしれません。

repl
>>> 'あいうえお'[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文字目から最後の文字までで「うえお」となります。

後編へ続く!

あんまり変に量が多すぎると頭に入ってこないです。
私も授業内容は少なければ少ないほど嬉しいですもの。

次回、無限大の刃物(スライサー) 〜後編〜!(コナン風(小並感))

というわけで、今日の記事はここまでです。
もしよろしければ記事へのいいねをして、次回記事をお楽しみに!

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1