How to Reverse a String in Python

Learn how to reverse a string in Python using slicing, the reversed() function, and loop concatenation with visual code examples.

Try Code in Editor

Explanation

String manipulation is a core capability in text processing, parsing, and algorithmic problem-solving. Reversing a string is a classic exercise that shows the flexibility of Python's data structures. Since strings in Python are immutable (meaning they cannot be changed after creation), reversing a string always returns a new string.

The most common, idiomatic, and fastest way to reverse a string in Python is using slice notation: `my_string[::-1]`. The slice syntax takes three parameters `[start:stop:step]`. By omitting `start` and `stop` and setting `step` to `-1`, you tell Python to step through the string backwards from the end to the beginning. Under the hood, this slicing operation is implemented in optimized C code, making it exceptionally fast.

Alternatively, you can use the built-in `reversed()` function, which returns an iterator that yields characters in reverse order. To convert this iterator back into a string, you join them using `"".join(reversed(text))`. This method is highly readable and works well if you want to loop over the reversed characters directly without creating a new string first.

Step-by-Step Implementation

  1. 1

    Use the slice notation [::-1] for the fastest and most pythonic way to reverse a string.

  2. 2

    Use "".join(reversed(text)) to reverse a string using an iterator-based approach.

  3. 3

    Always remember that reversing a string creates a new string object in memory.

Code Example

This script demonstrates reversing a string using slicing, join + reversed, and a manual loop implementation.

reverse_string.py
Try in Editor
text = "PyRun"

# Method 1: Slicing (Fastest & most common)
reversed_slice = text[::-1]
print("Slicing:", reversed_slice)

# Method 2: reversed() and join() (Very readable)
reversed_join = "".join(reversed(text))
print("Reversed join:", reversed_join)

# Method 3: Loop (Useful for demonstrating logic)
reversed_loop = ""
for char in text:
    reversed_loop = char + reversed_loop
print("Loop method:", reversed_loop)
Terminal Output
Slicing: nuRyP
Reversed join: nuRyP
Loop method: nuRyP

Frequently Asked Questions

Is string slicing the fastest way to reverse a string?

Yes, slice notation is implemented in C and runs much faster than loops or generator expressions.

Why can't I reverse a string in-place?

Strings in Python are immutable, meaning their characters cannot be modified in-place. You must construct a new string.

Related How-To Guides

Recommended Python Resources

Expand your knowledge with related interactive tutorials, cheat sheets, and code comparisons.