There are four main ways to reverse a string in Python:
s[::-1]with negative step size traverses the string from right to left.
''.join(reversed(s))first creates an iterable of characters in reversed order, and then joins these characters to obtain the reversed string.
- A for loop using the
range(len(s)-1, -1, -1)function traverses the indices from the last to the first. In the loop body, you can then add the respective elements in reverse order.
- A recursive function that takes one string as an element and returns the concatenation of the last character and the result of the function calling itself on the remaining characters except the last.
Here’s the most concise way to reverse a string as a graphic:
Reverse a String in Python Using Slicing
Slicing is a Python concept to carve out a substring from a given string
s by using the square bracket notation
s[start:stop:step] specifying the
start index, the
stop index, and the
step size. You can set default start and stop indices and use negative step size -1 to reverse a given string in Python. The respective code would be
s[::-1] to reverse string
Here’s an example that reverses a string using slicing:
s = '!dlrow olleh' res = s[::-1] print(res) # 'hello world!'
Reverse a String in Python Using For Loop
The traditional way to reverse a string is to use a
for loop to successively add the last character of the remaining string to an initially empty string variable. As soon as you reach the last string character, and you’ve kept adding the last element to the string, you get the original string in reversed order.
This is exemplified in the following example:
s = '!dlrow olleh' res = '' for i in range(len(s)-1, -1, -1): res += s[i] print(res) # hello world!
Reverse a String in Python Using Function reverse()
reverse() function creates a new iterable with elements in reversed order. However, the iterable is not yet a string—to fully reverse the original string, you need to combine the elements in the iterable in order using the built-in
An example is given next:
s = '!dlrow olleh' res = ''.join(reversed(s)) print(res) # hello world!
Reverse a String in Python Using Recursion
To reverse a string using recursion, you can define a function that calls itself.
- The recursion base case is if the function is called on the empty string in which case, the string is its own reverse string.
- The recursion non-base case is if the string is non-empty—now you can concatenate the result of calling the function on all characters except the last and the first character and return the result.
The function will then recursively call itself on shorter and shorter strings until the recursion base case is reached:
def recursive_reverse(s): if s: return recursive_reverse(s[1:]) + s return '' s = '!dlrow olleh' print(recursive_reverse(s)) # hello world!
Reverse a String in Python in One Line
The shortest one-liner solution to reverse a string in a single line of Python code is to use slicing with negative step size -1. For example, to reverse string
'!dlrow olleh', you can suffix the square bracket notation
[::-1] that goes from right to left and returns the reversed string.
Here’s an example:
While working as a researcher in distributed systems, Dr. Christian Mayer found his love for teaching computer science students.
To help students reach higher levels of Python success, he founded the programming education website Finxter.com. He’s author of the popular programming book Python One-Liners (NoStarch 2020), coauthor of the Coffee Break Python series of self-published books, computer science enthusiast, freelancer, and owner of one of the top 10 largest Python blogs worldwide.
His passions are writing, reading, and coding. But his greatest passion is to serve aspiring coders through Finxter and help them to boost their skills. You can join his free email academy here.