When you’re using Python strings often in your code, you may face the need to work with them in reverse order. Python includes a few handy tools and techniques that can help you out in these situations. With them, you’ll be able to build reversed copies of existing strings quickly and efficiently.
Knowing about these tools and techniques for reversing strings in Python will help you improve your proficiency as a Python developer.
In this tutorial, you’ll learn how to:
- Quickly build reversed strings through slicing
- Create reversed copies of existing strings using
reversed()
and.join()
- Use iteration and recursion to reverse existing strings manually
- Perform reverse iteration over your strings
- Sort your strings in reverse order using
sorted()
To make the most out of this tutorial, you should know the basics of strings, for
and while
loops, and recursion.
Free Download: Get a sample chapter from Python Basics: A Practical Introduction to Python 3 to see how you can go from beginner to intermediate in Python with a complete curriculum, up-to-date for Python 3.8.
Reversing Strings With Core Python Tools
Working with Python strings in reverse order can be a requirement in some particular situations. For example, say you have a string "ABCDEF"
and you want a fast way to reverse it to get "FEDCBA"
. What Python tools can you use to help?
Strings are immutable in Python, so reversing a given string in place isn’t possible. You’ll need to create reversed copies of your target strings to meet the requirement.
Python provides two straightforward ways to reverse strings. Since strings are sequences, they’re indexable, sliceable, and iterable. These features allow you to use slicing to directly generate a copy of a given string in reverse order. The second option is to use the built-in function reversed()
to create an iterator that yields the characters of an input string in reverse order.
Reversing Strings Through Slicing
Slicing is a useful technique that allows you to extract items from a given sequence using different combinations of integer indices known as offsets. When it comes to slicing strings, these offsets define the index of the first character in the slicing, the index of the character that stops the slicing, and a value that defines how many characters you want to jump through in each iteration.
To slice a string, you can use the following syntax:
a_string[start:stop:step]
Your offsets are start
, stop
, and step
. This expression extracts all the characters from start
to stop − 1
by step
. You’re going to look more deeply at what all this means in just a moment.
All the offsets are optional, and they have the following default values:
Offset | Default Value |
---|---|
start |
0 |
stop |
len(a_string) |
step |
1 |
Here, start
represents the index of the first character in the slice, while stop
holds the index that stops the slicing operation. The third offset, step
, allows you to decide how many characters the slicing will jump through on each iteration.
Note: A slicing operation finishes when it reaches the index equal to or greater than stop
. This means that it never includes the item at that index, if any, in the final slice.
The step
offset allows you to fine-tune how you extract desired characters from a string while skipping others:
>>> letters = "AaBbCcDd"
>>> # Get all characters relying on default offsets
>>> letters[::]
'AaBbCcDd'
>>> letters[:]
'AaBbCcDd'
>>> # Get every other character from 0 to the end
>>> letters[::2]
'ABCD'
>>> # Get every other character from 1 to the end
>>> letters[1::2]
'abcd'
Here, you first slice letters
without providing explicit offset values to get a full copy of the original string. To this end, you can also use a slicing that omits the second colon (:
). With step
equal to 2
, the slicing gets every other character from the target string. You can play around with different offsets to get a better sense of how slicing works.
Why are slicing and this third offset relevant to reversing strings in Python? The answer lies in how step
works with negative values. If you provide a negative value to step
, then the slicing runs backward, meaning from right to left.
For example, if you set step
equal to -1
, then you can build a slice that retrieves all the characters in reverse order:
>>> letters = "ABCDEF"
>>> letters[::-1]
'FEDCBA'
>>> letters
'ABCDEF'
Read the full article at https://realpython.com/reverse-string-python/ »
[ Improve Your Python With ๐ Python Tricks ๐ – Get a short & sweet Python Trick delivered to your inbox every couple of days. >> Click here to learn more and see examples ]
from Real Python
read more
No comments:
Post a Comment