Using slicing:

>>> 'hello world'[::-1]
'dlrow olleh'

Slice notation takes the form [start:stop:step]. In this case, we omit the start and stop positions since we want the whole string. We also use step = -1, which means, "repeatedly step from right to left by 1 character".

Answer from Paolo Bergantino on Stack Overflow
๐ŸŒ
Replit
replit.com โ€บ home โ€บ discover โ€บ how to reverse a string in python
How to reverse a string in Python
4 weeks ago - String slicing is the most Pythonic way to reverse a string because it's both concise and highly readable. This technique uses the extended slice syntax, where you can specify a start, stop, and step.
Discussions

Why does [::1] reverse a string in Python?
On July 1st, a change to Reddit's API pricing will come into effect. Several developers of commercial third-party apps have announced that this change will compel them to shut down their apps. At least one accessibility-focused non-commercial third party app will continue to be available free of charge. If you want to express your strong disagreement with the API pricing change or with Reddit's response to the backlash, you may want to consider the following options: Limiting your involvement with Reddit, or Temporarily refraining from using Reddit Cancelling your subscription of Reddit Premium as a way to voice your protest. I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns. More on reddit.com
๐ŸŒ r/learnprogramming
15
12
September 21, 2023
Method for reversing strings - Ideas - Discussions on Python.org
There may be other methods like splitting the string, reversing the resulting list, and then joining it back, but thatโ€™s a bit of work! There have been several times in my QA career where I am scripting in Python and need to reverse a string, but I have to look up the [::-1] syntax because ... More on discuss.python.org
๐ŸŒ discuss.python.org
1
February 20, 2025
Ways to reverse a string in Python?
Andrew Merrick is having issues with: This is in reference to the Stringcases challenge in the Tuples section of Python collections: More on teamtreehouse.com
๐ŸŒ teamtreehouse.com
3
September 11, 2014
Why does [::1] reverse a string in Python? : learnprogramming
๐ŸŒ r/learnprogramming
Top answer
1 of 14
3161

Using slicing:

>>> 'hello world'[::-1]
'dlrow olleh'

Slice notation takes the form [start:stop:step]. In this case, we omit the start and stop positions since we want the whole string. We also use step = -1, which means, "repeatedly step from right to left by 1 character".

2 of 14
329

What is the best way of implementing a reverse function for strings?

My own experience with this question is academic. However, if you're a pro looking for the quick answer, use a slice that steps by -1:

>>> 'a string'[::-1]
'gnirts a'

or more readably (but slower due to the method name lookups and the fact that join forms a list when given an iterator), str.join:

>>> ''.join(reversed('a string'))
'gnirts a'

or for readability and reusability, put the slice in a function

def reversed_string(a_string):
    return a_string[::-1]

and then:

>>> reversed_string('a_string')
'gnirts_a'

Longer explanation

If you're interested in the academic exposition, please keep reading.

There is no built-in reverse function in Python's str object.

Here is a couple of things about Python's strings you should know:

  1. In Python, strings are immutable. Changing a string does not modify the string. It creates a new one.

  2. Strings are sliceable. Slicing a string gives you a new string from one point in the string, backwards or forwards, to another point, by given increments. They take slice notation or a slice object in a subscript:

    string[subscript]
    

The subscript creates a slice by including a colon within the braces:

    string[start:stop:step]

To create a slice outside of the braces, you'll need to create a slice object:

    slice_obj = slice(start, stop, step)
    string[slice_obj]

A readable approach:

While ''.join(reversed('foo')) is readable, it requires calling a string method, str.join, on another called function, which can be rather relatively slow. Let's put this in a function - we'll come back to it:

def reverse_string_readable_answer(string):
    return ''.join(reversed(string))

Most performant approach:

Much faster is using a reverse slice:

'foo'[::-1]

But how can we make this more readable and understandable to someone less familiar with slices or the intent of the original author? Let's create a slice object outside of the subscript notation, give it a descriptive name, and pass it to the subscript notation.

start = stop = None
step = -1
reverse_slice = slice(start, stop, step)
'foo'[reverse_slice]

Implement as Function

To actually implement this as a function, I think it is semantically clear enough to simply use a descriptive name:

def reversed_string(a_string):
    return a_string[::-1]

And usage is simply:

reversed_string('foo')

What your teacher probably wants:

If you have an instructor, they probably want you to start with an empty string, and build up a new string from the old one. You can do this with pure syntax and literals using a while loop:

def reverse_a_string_slowly(a_string):
    new_string = ''
    index = len(a_string)
    while index:
        index -= 1                    # index = index - 1
        new_string += a_string[index] # new_string = new_string + character
    return new_string

This is theoretically bad because, remember, strings are immutable - so every time where it looks like you're appending a character onto your new_string, it's theoretically creating a new string every time! However, CPython knows how to optimize this in certain cases, of which this trivial case is one.

Best Practice

Theoretically better is to collect your substrings in a list, and join them later:

def reverse_a_string_more_slowly(a_string):
    new_strings = []
    index = len(a_string)
    while index:
        index -= 1                       
        new_strings.append(a_string[index])
    return ''.join(new_strings)

However, as we will see in the timings below for CPython, this actually takes longer, because CPython can optimize the string concatenation.

Timings

Here are the timings:

>>> a_string = 'amanaplanacanalpanama' * 10
>>> min(timeit.repeat(lambda: reverse_string_readable_answer(a_string)))
10.38789987564087
>>> min(timeit.repeat(lambda: reversed_string(a_string)))
0.6622700691223145
>>> min(timeit.repeat(lambda: reverse_a_string_slowly(a_string)))
25.756799936294556
>>> min(timeit.repeat(lambda: reverse_a_string_more_slowly(a_string)))
38.73570013046265

CPython optimizes string concatenation, whereas other implementations may not:

... do not rely on CPython's efficient implementation of in-place string concatenation for statements in the form a += b or a = a + b . This optimization is fragile even in CPython (it only works for some types) and isn't present at all in implementations that don't use refcounting. In performance sensitive parts of the library, the ''.join() form should be used instead. This will ensure that concatenation occurs in linear time across various implementations.

๐ŸŒ
Career Karma
careerkarma.com โ€บ blog โ€บ python โ€บ python reverse string: a step-by-step guide
Python Reverse String: A Step-By-Step Guide | Career Karma
December 1, 2023 - There is no function explicitly designed to reverse a string. When youโ€™re working in Python, you may have a string that you want to reverse. For instance, say you are creating a game.
๐ŸŒ
Reddit
reddit.com โ€บ r/learnprogramming โ€บ why does [::1] reverse a string in python?
r/learnprogramming on Reddit: Why does [::1] reverse a string in Python?
September 21, 2023 -

For example:

txt = "Hello World"[::-1]

Isn't the splice syntax [start : stop: step]? And default of start and stop are the beginning and end of the string? So that would make the above start at the beginning, stop at the end, but step by -1. That feels like it would start at the beginning, then step backwards to...before the beginning of the string?

Sorry for the silly question, I just can't figure out why this syntax works the way it does.

๐ŸŒ
Python.org
discuss.python.org โ€บ ideas
Method for reversing strings - Ideas - Discussions on Python.org
February 20, 2025 - There may be other methods like splitting the string, reversing the resulting list, and then joining it back, but thatโ€™s a bit of work! There have been several times in my QA career where I am scripting in Python and need to reverse a string, but I have to look up the [::-1] syntax because ...
๐ŸŒ
Plain English
python.plainenglish.io โ€บ how-to-reverse-a-string-in-python-893bd713da4a
How to Reverse a String in Python? | by Ramandeep Ladhar | Python in Plain English
February 9, 2022 - In this article, we deal with the question โ€œHow to reverse a string in Python?โ€ At last, we can conclude that slicing is the best way to reverse a string in python. Its code is simple and moreover, has fewer lines of operation.
Find elsewhere
๐ŸŒ
Hero Vired
herovired.com โ€บ learning-hub โ€บ topics โ€บ how-to-reverse-a-string-in-python
How to Reverse a String in Python - Hero Vired Topics
July 17, 2024 - What is String in Python?What is the need to Reverse Strings in Python?How to Reverse String in Python using For Loop?How to Reverse String in Python using a While Loop?How to Reverse String in Python using Slicing Operator?How to Reverse String in Python using Slice Function?How to Reverse String in Python using Recursion?How to Reverse String in Python using Stack?How to Reverse String in Python using reversed() & join() Functions?How to Reverse String in Python using List Comprehension?What are the Challenges of Reversing Strings in Python?ConclusionFAQs
๐ŸŒ
Team Treehouse
teamtreehouse.com โ€บ community โ€บ ways-to-reverse-a-string-in-python
Ways to reverse a string in Python? (Example) | Treehouse Community
September 11, 2014 - Strings haven't changed much, but be careful about using Python 2 docs. ... Andrew Merrick Apologies. That's correct. .reverse() only works on lists. I was actually suggesting that you split the string into letters, reverse that list, and join them back together all in one line of code.
๐ŸŒ
GeeksforGeeks
geeksforgeeks.org โ€บ python โ€บ reverse-string-python-5-different-ways
How to reverse a String in Python - GeeksforGeeks
This method provides a clear view of how the reversal happens character by character. ... s = "GeeksforGeeks" # Initialize an empty string to hold reversed result rev = "" # Loop through each character in original string for ch in s: # Add current character to front of reversed string rev = ch + rev print(rev)
Published ย  November 21, 2024
๐ŸŒ
DEV Community
dev.to โ€บ youngwonks โ€บ 5-ways-to-reverse-a-string-using-python-379o
5 Ways to Reverse a String using Python - DEV Community
June 4, 2021 - This is an approach where we step through the string one by one and keep appending the characters to the end of an empty string. At the end, we get a string that is the reverse of our original string. This reversed function is a built-in function in Python3 that allows us to reverse any sequence that is provided.
๐ŸŒ
Linuxize
linuxize.com โ€บ home โ€บ python โ€บ how to reverse a string in python
How to Reverse a String in Python | Linuxize
August 1, 2021 - Python doesnโ€™t have any built-in functions to reverse the string, but we can use other methodsto reverse the string.
๐ŸŒ
LeetCode
leetcode.com โ€บ problems โ€บ reverse-string
Reverse String - LeetCode
The input string is given as an array of characters s. You must do this by modifying the input array in-place [https://en.wikipedia.org/wiki/In-place_algorithm] with O(1) extra memory.
๐ŸŒ
Shiksha
shiksha.com โ€บ home โ€บ it & software โ€บ it & software articles โ€บ programming articles โ€บ how to reverse a string in python
How to Reverse a String in Python - Shiksha Online
March 3, 2023 - In Python, there is no character ... brackets can be used to access elements of the string. Python does not provide any built-in function to reverse a string....
๐ŸŒ
Educative
educative.io โ€บ answers โ€บ how-do-you-reverse-a-string-in-python
How do you reverse a string in Python?
In Python, strings are ordered sequences of character data. There is no built-in method to reverse a string.
๐ŸŒ
Flexiple
flexiple.com โ€บ python โ€บ python-reverse-string
Reverse String In Python - Flexiple
March 18, 2024 - To reverse a string in Python using a loop, follow these steps. First, initialize an empty string that will hold the reversed string. Then, use a loop to iterate over the original string, adding each character to the beginning of the new string.
๐ŸŒ
Pierian Training
pieriantraining.com โ€บ home โ€บ how to reverse a string in python
How to Reverse a String in Python - Pierian Training
April 27, 2023 - For example, `my_string[::-1]` is equivalent to `my_string[None:None:-1]`. The `None` values represent the start and end indices of the slice, and since they are omitted, Python assumes that we want to include all characters in the string. Overall, using slicing is an easy and efficient way to reverse a string in Python.
๐ŸŒ
Sololearn
sololearn.com โ€บ en โ€บ Discuss โ€บ 3338977 โ€บ how-to-properly-reverse-a-string-in-python-
How to properly reverse a string in python | Sololearn: Learn to code for FREE!
September 15, 2025 - Alex Bright Chizaram , besides ... ... In Python, text[::-1] is a slicing operation applied to a sequence (like a string, list, or tuple) that effectively reverses the order of its elements....
๐ŸŒ
Stack Abuse
stackabuse.com โ€บ how-to-reverse-string-in-python
How to Reverse String in Python
May 24, 2022 - In this short guide, learn how to reverse a string in Python, with practical code examples and best practices - using the slice notation with a negative step, a for loop, a while loop, join() and reversed().
๐ŸŒ
Interviewing.io
interviewing.io โ€บ questions โ€บ reverse-string
How to Reverse a String [Interview Question + Solution]
September 13, 2018 - When reversing a string, you are dealing with a sequence of characters. Strings are typically treated as immutable in many programming languages, including Python, which means you cannot modify them directly.