How to Reverse a String in Python

python reverse string

Reversing a string means changing the order of its characters. The last character becomes the first, the second last becomes the second, and so on. You can reverse strings in Python in several ways.

This guide shows you how to reverse a string in Python using different methods.

How to Reverse a String in Python

You can reverse a string in Python using multiple approaches. Each method has its own use case and works well in specific situations.

Here are the most common ways to reverse a string:

1. String Slicing

String slicing is the simplest and most Pythonic way to reverse a string. It uses a special syntax to create a reversed copy of the original string.

How it works:

Python’s slicing syntax is [start:stop:step]. To reverse a string, omit start and stop and set step to -1. This tells Python to iterate through the string from end to beginning.

Code Example:

original_string = "Hello"
reversed_string = original_string[::-1]
print(reversed_string)

Output:

olleH

Why it works:

  • start and stop are empty, so Python uses the entire string.
  • step is -1, which means Python reads the string backward, one character at a time.
Academy Pro

Python Programming Course

In this course, you will learn the fundamentals of Python: from basic syntax to mastering data structures, loops, and functions. You will also explore OOP concepts and objects to build robust programs.

11.5 Hrs
51 Coding Exercises
Learn Python Programming

2. reversed() Function and join() Method

The reversed() function returns an iterator that yields characters in reverse order. You combine this with the join() method to build the new reversed string.

How it works:

  • The reversed() function takes an iterable (like a string) and gives you an iterator that produces elements in reverse order.
  • The join() method concatenates elements from an iterable into a single string. When you use an empty string ('') with join(), it merges the characters directly without any separator.

Code Example:

original_string = "Python"
reversed_iterator = reversed(original_string)
reversed_string = "".join(reversed_iterator)
print(reversed_string)

Output:

nohtyP

Why it works:

  • reversed(original_string) creates an object that provides characters like ‘n’, ‘o’, ‘h’, ‘t’, ‘y’, ‘P’.
  • "".join() takes these characters and combines them to form “nohtyP”.

3. Using a for Loop

You can manually reverse a string by iterating through its characters and building a new string. This approach offers more control, especially for learning how loops work.

How it works:

You create an empty string and then iterate through the original string. In each iteration, you add the current character to the beginning of the new string. This effectively reverses the order.

Code Example:

original_string = "World"
reversed_string = ""
for char in original_string:
    reversed_string = char + reversed_string
print(reversed_string)

Output:

dlroW

Why it works:

  • The loop takes characters one by one: ‘W’, then ‘o’, then ‘r’, and so on.
  • When ‘W’ is processed, reversed_string becomes “W”.
  • When ‘o’ is processed, it’s added before ‘W’, making reversed_string “oW”.
  • This continues until all characters are added in reverse order.

4. Using a while Loop

A while loop can also reverse a string. You iterate from the last character to the first, appending each character to a new string.

How it works:

You initialize an empty string and a counter that starts at the last index of the original string. The loop continues as long as the counter is non-negative. In each iteration, you append the character at the current index to the new string and then decrease the counter.

Code Example:

original_string = "Example"
reversed_string = ""
index = len(original_string) - 1
while index >= 0:
    reversed_string += original_string[index]
    index -= 1
print(reversed_string)

Output:

elpmaxE

Why it works:

  • The loop starts with the last character of original_string (e.g., ‘e’ from “Example”).
  • It adds ‘e’ to reversed_string.
  • Then it moves to the second-to-last character (‘l’), adds it, and so on.
  • This builds the reversed string character by character from end to start.

5. Using Recursion

Recursion is a programming technique where a function calls itself. You can use it to reverse a string by breaking the problem into smaller, similar sub-problems.

How it works:

The base case for the recursion is an empty string, which returns itself. For a non-empty string, the function takes the last character and concatenates it with the recursive call of the rest of the string (excluding the last character).

Code Example:

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

original_string = "Recursion"
reversed_string = reverse_string_recursive(original_string)
print(reversed_string)

Output:

noisruceR

Why it works:

Consider “ABC”:

  • reverse_string_recursive("ABC") becomes ‘C’ + reverse_string_recursive("AB")
  • reverse_string_recursive("AB") becomes ‘B’ + reverse_string_recursive("A")
  • reverse_string_recursive("A") becomes ‘A’ + reverse_string_recursive("")
  • reverse_string_recursive("") returns “”

So, ‘A’ + “” becomes “A”
Then ‘B’ + “A” becomes “BA”
Finally ‘C’ + “BA” becomes “CBA”

Which Method to Choose?

  • String slicing ([::-1]): This is the most efficient and Pythonic way. Use it for most string reversal needs. It is concise and fast.
  • reversed() and join(): This method is also highly efficient and readable. It is a good choice when you want to use built-in functions for clarity.
  • for or while loops: These methods are useful for understanding fundamental programming concepts or when you need more control over the reversal process. They are generally less efficient than slicing or reversed() for large strings due to repeated string concatenations.
  • Recursion: While elegant, recursion can be less efficient for very long strings due to the overhead of function calls. It can also lead to a RecursionError for extremely long strings if the recursion depth limit is exceeded.
Avatar photo
Great Learning Editorial Team
The Great Learning Editorial Staff includes a dynamic team of subject matter experts, instructors, and education professionals who combine their deep industry knowledge with innovative teaching methods. Their mission is to provide learners with the skills and insights needed to excel in their careers, whether through upskilling, reskilling, or transitioning into new fields.

Academy Pro Subscription

Grab 50% off
on Top Courses - Free Trial Available

×
Scroll to Top