Python range() Function

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)

# 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.

Python range() function

Example :

numbers = list(range(0))

numbers = list(range(5))

numbers = list(range(10))


[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.

Python range() function with start parameter

Example :

numbers = list(range(1, 10))

numbers = list(range(5, 10))

numbers = list(range(7, 10))


[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:

Python range() function with step parameter


numbers = list(range(1, 10, 1))

numbers = list(range(1, 10, 2))

numbers = list(range(1, 10, 3))


[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.

Python range() function with negative step

Example : Reverse range() function

numbers = list(range(-10))

numbers = list(range(-10, -1))

numbers = list(range(-10, -1, 2))


[-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):



Example 2: Access list items using range()

numbers = [1, 2, 3, 4, 5]
length  = len(numbers)
for i in range(length):



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])


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])


numbers[-1] is 4
numbers[-2] is 3
numbers[-3] is 2


  • Manoj Kumar

    Hi, My name is Manoj Kumar. I am a full-stack developer with a passion for creating robust and efficient web applications. I have hands-on experience with a diverse set of technologies, including but not limited to HTML, CSS, JavaScript, TypeScript, Angular, Node.js, Express, React, and MongoDB.

    View all posts