Summary: Use negative step in the
range() function to reverse the given sequnce as:
range(start, stop, -step). Another workaround is to apply the
reversed() function to the given range to reverse it as:
Problem: Given a range/sequence of numbers, how will you reverse the range?
# Given range
for i in range(1, 6):
print(i, end=” “)
# 1 2 3 4 5
5 4 3 2 1
So, reversing the range simply means reversing the order of the given sequence.
range() function creates an iterable of subsequent integers within a given range of values. You can pass either only a
stop argument in which case the
range object will include all integers from
stop (excluded). Or you can pass
step arguments in which case the range object will go from
step using the given
step size. For example,
range(3) results in
0, 1, 2 and
range(2, 7, 2) results in
2, 4, 6.
With the prerequisites out of our way, let us dive into the mission-critical question and learn the different ways of solving the given problem.
Method 1: Using range with a Negative Step
You can use the
range() function with a negative step size. The meaning is “move from right to the left” using the negative step size as the difference between two subsequent values. In this case, the start argument should be larger than the stop argument.
Thus, here’s how you can exploit the capabilities of the negative range to solve the given problem:
for i in range(5, 0, -1): print(i, end=" ") # 5 4 3 2 1
Note that the start value in this case begins from the end. In other words the highest value of the sequence is the start value for the
range function with a negative step.
Another way of implementing the negative step is as follows:
for i in range(1, 6)[::-1]: print(i, end=" ") # 5 4 3 2 1
Method 2: Using reversed()
reversed(sequence) function returns a reverse iterator over the values of the given sequence such as a list, a tuple, a string or a range of values. Thus, apply the
reversed() function to the given range to reverse the order of the sequence.
for i in reversed(range(1, 6)): print(i, end=" ") # 5 4 3 2 1
Well! That’s how you can reverse a range of values in Python. Let’s wrap up this tutorial with a few exercises to strengthen your grip on the topic.
Exercise 1: Consider the given snippet:
for i in range(1, 6, 2): print(i, end=" ") # OUTPUT: 1 3 5
Challenge: Formulate an alternate one-line solution that reverses the given range/sequence of numbers. Thus, the expected output is: 5 3 1
[print(i, end=" ") for i in range(5, 0, -2)] # OUTPUT: 5 3 1
Exercise 2: Consider that you have been given a string – “aabbbbaa”. Can you formulate a one-line solution to check if the given string is a Palindrome or not?
print("Palindrome!" if 'aabbbbaa'[::-1] == 'aabbbbaa' else "Not Palindrome!") # Palindrome!
That was a pretty simple tutorial. Wasn’t it? Nevertheless, it might come in handy in numerous situations while you are solving a specific problem. I hope this article helped you. Please subscribe and stay tuned for more interesting discussions and solutions in the future.
Here’s a list of very interesting and comprehensive tutorials that are quite similar to the one discussed here. Please feel free to dive into these tutorials to enhance your skills:
- How to Reverse a List in Python?
- Reverse a String in Python
- 5 Best Ways to Reverse a Python Dictionary
But before we move on, I’m excited to present you my new Python book Python One-Liners (Amazon Link).
If you like one-liners, you’ll LOVE the book. It’ll teach you everything there is to know about a single line of Python code. But it’s also an introduction to computer science, data science, machine learning, and algorithms. The universe in a single line of Python!
The book was released in 2020 with the world-class programming book publisher NoStarch Press (San Francisco).