Decrementing With range()
You can supply a negative step value to generate a list of numbers that is decreasing. If you do that, you need to make sure your stopping value is less than your starting value, or else you’ll get a list with no elements:
for i in range(10, -6, -2):
print(i)
This will start at 10 and count down by 2 until you reach -6, or rather -4 because you don’t include -6.
00:00
We can supply a negative step value to generate a list of numbers that is decreasing. If we do this, then we have to make sure our stopping value is less than our starting value, or else we’ll get a list with no elements.
00:19
Think about it like this. If I ask you to count from 10 to 20, but down by 2, what numbers would you say? None. Let’s give this a try. I’ll say for i in range(10, -6, -2): and print(i).
00:47
This will start at 10 and count down by 2 until we reach -6. Or really, -4, because we don’t include -6.
00:59
And that’s exactly what we see! And just to show you why it’s important that the stopping value is smaller, I’m going to change -6 to a positive 20.
01:14
And now you see that we get nothing. There’s no way to count down from 10 by 2 and get to 20. As you can see, the range() function lets you generate an increasing or decreasing sequence of numbers.
01:33
But what if we already have a sequence of numbers and we want to loop over them in reverse order? For that, we can use the built-in reversed() function.
01:45
That looks like this. for i in reversed() and I’ll pass in range(5). print(i). The range() function will give us a list from 0 to 4, and reversing that will allow us to iterate from the last value in the list down to the first.
02:11
You could also accomplish this by just using the range() function without reversed(), but we’ve included this here to show you another way you might see iteration done.
Become a Member to join the conversation.