Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで文字列を逆順にする方法を徹底解説!初心者向け5つの実装テクニック

Pythonには、文字列を逆順に並べ替えるための組み込み関数が用意されていません。そのため、文字列を反転させたい場合は、自分でロジックを実装する必要があります。

本記事では、Pythonで文字列を逆順にする代表的な5つの方法を、コード例とともにわかりやすく解説します。それぞれの特徴やパフォーマンスの違いも紹介するので、目的に合った手法を選ぶ参考にしてください。

方法1:forループを使う

この方法の基本的な考え方は、文字列の最後のインデックスから0番目のインデックスへ向かって逆方向にループ処理を行うことです。各イテレーションで文字列の文字を取り出し、新しい文字列の末尾に追加していくことで、ループ終了時に反転した文字列が完成します。

一般的な手順は以下の通りです。

  • 空の新しい文字列aを用意する
  • 文字列の最後のインデックスから0番目まで、1ずつ減らしながらループし、現在のインデックスの文字をaに連結する
  • 完成したaを返す

コード例

def reverse(s):
    a = ""
    last_index = len(s) - 1
    for i in range(last_index, -1, -1):
        a = a + s[i]
    return a

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

上記のアプローチをよりスマートに実装することもできます。ここではfor-eachループを使い、各文字を新しい文字列の「先頭」に追加していきます。文字を先頭に追加していくことで、結果として反転した文字列が得られます。for-eachループの代わりに、0から文字列の長さまでの通常のループを使っても同様の結果になります。

コード例

def reverse(s):
    a = ""
    for i in s:
        a = i + a
    return a

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

方法2:whileループを使う

forループの代わりにwhileループを使用することも可能です。最後のインデックスから0番目のインデックスまでwhileループで繰り返し処理を行い、現在のインデックスの文字を新しい文字列の末尾に連結していくことで、反転した文字列を取得します。

コード例

def reverse(s):
    a = ""
    i = len(s) - 1
    while(i >= 0):
        a = a + s[i]
        i -= 1
    return a

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

方法3:拡張スライス構文(Extended Slice)を使う

拡張スライス構文は[start, end, step]という3つのパラメータを受け取ります。startとendを省略した場合、デフォルトではstartが0、endが文字列の長さとして扱われます。stepに「-1」を指定すると、文字列の末尾から先頭に向かって処理が進むため、結果として反転した文字列が得られます。

この方法はわずか1行のコードで実装できるのが大きな魅力です。

コード例

def reverse(s):
    a = s[::-1]
    return a

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

方法4:join()とreversed()を組み合わせる

組み込み関数reversed()を使っても文字列を反転できます。ただし、reversed()関数は反転されたイテレータを返すため、そのままでは文字列として扱えません。そこで、join()メソッドを使ってイテレータ内の文字を結合し、文字列として取得する必要があります。

コード例

def reverse(s):
    a = "".join(reversed(s))
    return a

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

方法5:再帰呼び出しを使う

再帰処理を利用して文字列を反転させることもできます。reverse関数に対して、インデックス1以降の部分文字列を渡して再帰的に呼び出します。これにより、文字列の長さがベースケースである0に向かって徐々に減少していきます。各再帰呼び出しのたびに、文字列をインデックス1以降でスライスし、切り取った最初の文字をスライス後の文字列の末尾に連結していく仕組みです。

コード例

def reverse(s):
    if(len(s) == 0):
        return s
    else:
        return reverse(s[1:]) + s[0]

string = "TutorialsPoint"
print(reverse(string))

実行結果

INPUT : TutorialsPoint
OUTPUT : tnioPslairotuT

どの方法が最速でおすすめ?

文字列を反転させる最も高速かつ優れた方法は、スライス構文(方法3)です。Pythonで文字列を逆順にするすべての手法の中でも最も速い結果が得られます。さらに、たった1行のコードで実装でき、複雑なロジックを自分で考える必要がないため、可読性と保守性の面でも優れています。

一方、学習目的でアルゴリズムの動きを理解したい場合は、forループや再帰を使った方法も勉強価値があります。実務ではスライス構文、学習では他の手法、というように使い分けるのがおすすめです。

  1. Androidで文字列を逆順に表示する方法をわかりやすく解説

    本記事では、Androidアプリ開発において、ユーザーが入力した文字列を逆順(リバース)にして画面に表示する方法を実例とともに解説します。EditTextに入力されたテキストを、ボタンのクリックをきっかけに反転させてTextViewへ出力するシンプルなサンプルです。手順1:新規プロジェクトを作成するまず、Android Studioを開き、「File」→「New Project」から新しいプロジェクトを作成します。プロジェクト作成時に必要な項目をすべて入力してセットアップを完了させましょう。手順2:レイアウトファイル(activity_main.xml)を編集する次に、res/layout/a

  2. Pythonプログラムの実行方法まとめ!IDLE・コマンドライン・PyCharmなど5つの方法を解説

    コードを書いたら、次はそれを実行して出力結果を確認する必要があります。プログラムを実行することで、書いたコードが正しく動作し、期待通りの結果が得られるかどうかをチェックできます。幸いなことに、Pythonプログラムの実行はとても簡単です。この記事では、代表的な5つの実行方法をわかりやすく解説します。IDLEで実行するPythonに標準で付属しているIDLEを使ってプログラムを実行するには、以下の手順に従います。Pythonのコードを書いて保存します。メニューから「Run > Run Module」を選択するか、キーボードのF5キーを押すだけで実行できます。IDLEは初心者にとって扱いやす