01 / 07
範囲を指定して切り出す
1文字ではなく、まとめて何文字か取り出したいときはスライスを使う。
namae[0:3] と書くと、番号 0 から 3 の手前まで、つまり先頭3文字が取り出せる。リストでやったのとまったく同じ形だね。
namae = "やまだはなこ"print(namae[0:3])実行結果
やまだ
くり返しとデータの持ち方
INPUT · スライド
01 / 07
1文字ではなく、まとめて何文字か取り出したいときはスライスを使う。
namae[0:3] と書くと、番号 0 から 3 の手前まで、つまり先頭3文字が取り出せる。リストでやったのとまったく同じ形だね。
namae = "やまだはなこ"print(namae[0:3])実行結果
やまだ
02 / 07
ここが引っかかりやすいところ。[0:3] に番号3の文字は入らない。
| 文字 | や | ま | だ | は | な | こ |
|---|---|---|---|---|---|---|
| 番号 | 0 | 1 | 2 | 3 | 4 | 5 |
入るのは 0 1 2 の3文字。「うしろの番号は入らない」と覚えてしまおう。おかげで [0:3] は「3文字ぶん」と読めるようになっているんだ。
namae = "やまだはなこ"print(namae[3:6])実行結果
はなこ
03 / 07
前を省くと「最初から」、うしろを省くと「最後まで」になる。
namae[:3] … 最初から3文字namae[3:] … 4文字目から最後までnamae[:] … まるごと全部省略した形のほうがよく使われるよ。数えなくていいところは数えないのがコツだ。
namae = "やまだはなこ"print(namae[:3])print(namae[3:])print(namae[:])実行結果
やまだ はなこ やまだはなこ
04 / 07
マイナスの番号はスライスの中でも使える。[-2:] なら「後ろから2文字」、[:-1] なら「最後の1文字を除いた残り」だよ。
長さを調べなくても端っこを切り出せるので、覚えておくと出番が多い。
namae = "やまだはなこ"print(namae[-2:])print(namae[:-1])実行結果
なこ やまだはな
05 / 07
並べて見てみよう。書き方はまったく同じで、返ってくるものだけが違う。
Python は「並んでいるもの」を同じ記号で扱えるように作られている。1つ覚えれば両方に効くんだ。
kudamonos = ["りんご", "みかん", "ぶどう"]namae = "やまだはなこ"print(kudamonos[0:2])print(namae[0:2])実行結果
['りんご', 'みかん'] やま
06 / 07
ここで大きな違いがひとつ。リストは kudamonos[0] = "もも" で中身を入れかえられた。
でも文字列は同じことができない。1文字だけ差しかえようとすると、エラーで止められる。
namae = "やまだ"namae[0] = "あ"実行結果
TypeError: 'str' object does not support item assignment
07 / 07
では1文字だけ変えたいときはどうするか。元をいじるのではなく、新しい文字列を作る。
切り出してつなげばいい。元の namae はそのまま残っていて、別の文字列ができあがるよ。
この「元は変わらない」という性質は、次のレッスンでもう一度出てくる。文字列の道具はどれも新しい文字列を返すんだ。
namae = "やまだ"atarasii = "あ" + namae[1:]print(atarasii)print(namae)実行結果
あまだ やまだ