Python range()
function is very popular and widely used especially when you are working with the for and while loops. This function returns an immutable sequence of numbers in a given range. Using this function you can even generate a sequence of numbers in a given step size.
In this tutorial, we are going to learn the working of the range()
function with the help of relevant examples in detail.
numbers = range(5) numbers = list(numbers) print(numbers) # Output: [0, 1, 2, 3, 4]
Syntax of range() Function
The syntax of the range()
function is as follows:
range(start, stop, step)
range() Function Parameters
The range()
function can accept one, two, or at most three parameters. These parameters are given below:
- start – (Optional) An integer which is the starting point of the sequence. The default value is 0.
- stop – An integer value denoting the ending point of the sequence. This is never included in the end result.
- step – (Optional) An integer value denoting the incremental change between any two consecutive numbers in the sequence. The default value of step size is 1.
range() Function Return Value
The range()
function returns an immutable sequence of numbers of type range. It returns an empty sequence if the start and stop both parameters value is the same. Don’t worry we will discuss each possible combination in detail.
Working of range() Function
The result of the range()
function depends on the number of parameters passed to it. Therefore, we will first pass only one parameter(stop), then two(start & stop), and then three(start, stop & step) and will understand the working of the range() function in each case. So, let’s get started.
1. Pass only one parameter(stop) to the range() function
When we pass only one parameter to the range()
function, it starts the sequence from 0 and ends at stop-1 value i.e. stop value is never the part of the sequence.
Example :
numbers = list(range(0)) print(numbers) numbers = list(range(5)) print(numbers) numbers = list(range(10)) print(numbers)
Output:
[] [0, 1, 2, 3, 4] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
2. Pass two parameters(start & stop) to the range() Function
As we saw in the above example, by default the range()
function starts at 0. But, if we want to start it at any other integer, we can easily do this by passing the start parameter to it.
Example :
numbers = list(range(1, 10)) print(numbers) numbers = list(range(5, 10)) print(numbers) numbers = list(range(7, 10)) print(numbers)
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9] [5, 6, 7, 8, 9] [7, 8, 9]
3. Pass all three parameters(start, stop & step) to the range() Function
What if we want a sequence of numbers starting from 1 to 10 with an incremental difference of 2 or 3? Well, the third parameter(step) of the range() function helps us achieving this. See the example given below:
Example:
numbers = list(range(1, 10, 1)) print(numbers) numbers = list(range(1, 10, 2)) print(numbers) numbers = list(range(1, 10, 3)) print(numbers)
Output:
[1, 2, 3, 4, 5, 6, 7, 8, 9] [1, 3, 5, 7, 9] [1, 4, 7]
range() function with negative values
Sometimes a situation may occur where you need a sequence of negative numbers like excessing list items from the end of it. In such situations, the range()
function becomes very helpful. Because we don’t have to explicitly make the number negative as the range() function takes care of that.
Example : Reverse range() function
numbers = list(range(-10)) print(numbers) numbers = list(range(-10, -1)) print(numbers) numbers = list(range(-10, -1, 2)) print(numbers)
Output:
[] [-10, -9, -8, -7, -6, -5, -4, -3, -2] [-10, -8, -6, -4, -2]
range() function with for loop
As I already mentioned, the range()
function is mainly used with the for loop and it’s time to implement what I said. So let’s just do that.
Example 1: Print all even numbers from 1 to 10.
for i in range(2, 11, 2): print(i)
Output:
2 4 6 8 10
Example 2: Access list items using range()
numbers = [1, 2, 3, 4, 5] length = len(numbers) for i in range(length): print(numbers[i])
Output:
1 2 3 4 5
Accessing range() Items
As we already discussed, the range()
function returns a sequence object of numbers in a given range. Therefore, like the lists and tuples, its items can also be accessed using both positive and negative indexing.
Example 1: Access range() items using positive indexing
numbers = range(5) print('numbers[0] is', numbers[0]) print('numbers[1] is', numbers[1]) print('numbers[2] is', numbers[2])
Output:
numbers[0] is 0 numbers[1] is 1 numbers[2] is 2
Example 2: Access range() items using negative indexing
numbers = range(5) print('numbers[-1] is', numbers[-1]) print('numbers[-2] is', numbers[-2]) print('numbers[-3] is', numbers[-3])
Output:
numbers[-1] is 4 numbers[-2] is 3 numbers[-3] is 2