Pythonで文字列を逆順にする方法![::-1]のスライスを活用
生徒
「Pythonで、文字列を反対から表示することってできますか?」
先生
「はい、Pythonではスライス構文を使えば、文字列を簡単に逆順(ぎゃくじゅん)にできますよ。」
生徒
「スライス構文って何ですか?なんだか難しそう…」
先生
「心配いりません。まずは文字列の仕組みからやさしく解説していきましょう!」
1. 文字列を反対に並べるには?
Pythonでは文字列(もじれつ)をそのまま使って、反対の順番に並べることができます。
たとえば、「Python」という文字列を逆順にすると「nohtyP」になります。
これを行うのが、スライス構文の[::-1]
という書き方です。
2. Pythonのスライス構文とは?初心者にもわかる説明
スライス構文とは、文字列やリストなどから、一部を取り出したり、順番を変えたりできる方法です。
スライスは次のように書きます。
文字列[開始位置:終了位置:ステップ]
このとき、[::-1]
とすると、ステップが「-1」になって、「ひとつずつ逆方向に進む」=逆順になります。
text = "Python"
reversed_text = text[::-1]
print(reversed_text)
nohtyP
3. 実際の例でスライスを練習しよう
まずは短い日本語の文字列で練習してみましょう。たとえば「こんにちは」を反対にします。
word = "こんにちは"
print(word[::-1])
はちにんこ
このように、文字を後ろから1つずつ取り出すことで、簡単に逆順が作れます。
4. 応用:文章の逆順や単語の順序を逆にする
文章全体を逆にすると、読みづらくなるかもしれませんが、単語の順番だけを反転したいときもあります。
そのときは、まずsplit()
メソッドで単語ごとに区切り、[::-1]
で逆順にしてからjoin()
でつなげます。
sentence = "I love Python programming"
words = sentence.split()
reversed_words = words[::-1]
result = " ".join(reversed_words)
print(result)
programming Python love I
split()
は空白で区切る関数、join()
はリストをつなげる関数です。
5. スライスのしくみを図でイメージ
「Python」という文字列は、パソコンの中では次のように文字が番号(インデックス)で並んでいます。
P y t h o n
0 1 2 3 4 5
逆順では、後ろから見ていくため、インデックスは -1, -2, -3... となります。
n o h t y P
-1 -2 -3 -4 -5 -6
[::-1]
はこのようにマイナスの順番でたどっていくという意味になります。
6. for文で逆順を作ることもできる
Pythonでは、for文
を使って文字列を1文字ずつ取り出すことができます。
次のように書けば、逆順の文字列も作れますが、[::-1]
の方が圧倒的に簡単です。
text = "Python"
reversed_text = ""
for char in text:
reversed_text = char + reversed_text
print(reversed_text)
nohtyP
7. 日本語でも使える?マルチバイト文字の注意点
Pythonでは、日本語のように1文字が2バイト以上ある文字(これをマルチバイト文字といいます)でも、[::-1]
を使って問題なく逆順にできます。
ただし、文字コードやエンコーディング
といった難しい話になると別の注意が必要になりますが、普通にprintで表示する分には問題ありません。
name = "田中太郎"
print(name[::-1])
郎太中田
8. 逆順に使える場面いろいろ
文字列を逆順にする方法は、いろいろな場面で使えます。たとえば:
- ユーザーの入力が「しりとり」になるか調べる
- パスワードが反対に書かれているか判定する
- 逆さ読みをするクイズゲーム
- 回文(前から読んでも後ろから読んでも同じ)をチェックする
シンプルな記法でも、使い方によってはとても便利です。