とまと あんらいぷ…

エンジニアの活動記録とかつぶやきとか

GitHub

WindowsでPython その7(スライスってなんぞ)

気づけば一週間連続更新


あれ?結構Pythonにハマってる気がする・・・
こんなに連続で更新するなんて。そろそろお迎えがくるかもしれない。

pythonが誇るスライス


pythonのチュートリアルを読んでいて、よくわからない言葉がありました。
インデクス表記に加え、スライス もサポートされています

スライス・・・スライス?

読み進めていると、ちょっと目からウロコ。
こんなの、他の言語にあったっけ!?
だいたいは、「こっから、いくつ」なんだけど、
Pythonの概念的には「こっからここまで」を示す表記でした。

でも表記方法がなかなかおもしろく、使い所が多そうなので色々叩いてみました。

スライスを使わない場所の指定


とりあえずコレを見てください。

変数 str に "abcdefgh" って突っ込んみます。
で、str と打つと"abcdefgh" って出力されます。

WindowsでPython その7(スライスってなんぞ)

これはprint()を使ってもいいんだけど、変数の内容を表示させたいときは別にprintと打たなくてもできるんだね。
個人的にはC#使ってると()を使いたくなるんだけど、pythonの思想でより簡単に、素早くコーディングできるというのがあるので
使わない方になれるのがいいのかな?

WindowsでPython その7(スライスってなんぞ)

あ! なんか表示のされ方が違う。
strの時は''でくくられてるけど、
print(str)の時は内容が表示されてる。

やっぱり意味が違うみたいなので、同じではないですね。
ナゼそうなるのかとかはまたの機会に。
とりあえず、そうなるとだけ覚えましょう。悩んでたらキリがない。


でだ・・・たとえば"abcdefgh"の2文字目 b だけを表示したい時は
str[1]と打つ

WindowsでPython その7(スライスってなんぞ)


※プログラムの世界では、多くは1番目は0で表現する。 Pythonも同じく1文字目は0です。

対応させるとこう

abcdefgh
01234567

WindowsでPython その7(スライスってなんぞ)

結局スライスってなに


スライスというのは「ポジション○からポジション○まで」のようです
ポジションってのはこんなん

WindowsでPython その7(スライスってなんぞ)


"abcdefgh"を例にすると

"bcde"と出したい場合は

str[1:5 ]と書く

WindowsでPython その7(スライスってなんぞ)

こんな感じ。ちょっと使いにくい・・・

スライスの書き方色々


公式サイトを見るとこんなこと書いてる。

開始インデクスは常に含まれ、終了インデクスは常に含まれないことに注意してください。なので s[:i] + s[i:] が常に s と等しい、ということになります


どういうことかというと・・・
WindowsでPython その7(スライスってなんぞ)

[ : ] のどちらかを省略した場合、内部的にはこうなる

[3:] → [3:8]

[:5]  →[0:5]

実際に書いたものと同じですね。

[WindowsでPython その7(スライスってなんぞ)

意外ととっつきにくいスライス


使ってみたけど、、、微妙・・・なんか直感的じゃない。
それだったら、1:2で。ポジション1から2つとかのほうが慣れてます。

が、やってるのはPython。なれるしかあるまい。

このシリーズのコードにはしばらくスライスがでてくるかもしれないので、
是非実際に叩いてみて結果を見てみることをおすすめします。

C++とかC#には無い概念じゃないかな・・・ 続きを読む
次のページ

FC2Ad