Python range() Function
Updated on
•6 min read

The Python range type generates a sequence of integers by defining a start and the end point of the range. It is generally used with the for
loop to iterate over a sequence of numbers.
range() works differently in Python 2 and 3.
In Python 2, there are two functions that allow you to generate a sequence of integers, range and xrange. These functions are very similar, with the main difference being that range returns a list, and xrange returns an xrange object.
In Python 3, the xrange function has been dropped, and the range function behaves similarly to the Python 2 xrange. Python 3 range is not a function but rather a type that represents an immutable sequence of numbers.
In this article, we will cover the basics of the Python 3 range type.
Python range() syntax
The range constructor takes the following forms:
range(stop)
range(start, stop[, step])
The arguments provided to the range constructor must be integers. Floating numbers and other types are not allowed.
range takes one required and two optional arguments. It returns a range object that represents the given range and generates the numbers on demand.
Python range(stop)
When only one argument is given, range returns a sequence of numbers, incremented by 1, starting from 0 to stop - 1.
Here’s the range type in action:
for i in range(5):
print(i)
The generated sequence of numbers starts from 0 and ends with 4 (5-1):
0
1
2
3
4
If the argument is 0 or a negative integer range returns an empty sequence:
print(list(range(-5)))
We’re converting the range object to a list because range does a lazy evaluation of the integer sequence. The output is an empty list:
[]
Python range(start, stop)
When two arguments are provided, range returns a sequence of numbers, incremented by 1, starting from start to stop - 1.
Here is an example:
for i in range(3, 5):
print(i)
3
4
The stop argument must be greater than start. Otherwise, the sequence is empty:
print(list(range(5, 3)))
[]
You can use 0, positive and negative integers as arguments:
print(list(range(-5, -3)))
[-5, -4]
print(list(range(-3, 0)))
[-3, -2, -1]
Python range(start, stop, step)
When three arguments are given, range returns a sequence of numbers, incremented or decremented by step, starting from start to stop - 1.
If step is positive, range returns a sequence that increments:
for i in range(0, 26, 5):
print(i)
0
5
10
15
20
25
When incrementing, the stop argument must be greater than start. Otherwise, the sequence is empty.
If step is negative, range returns a sequence that decrements:
for i in range(20, 4, -5):
print(i)
20
15
10
5
When decrementing, the stop argument must be less than start. Otherwise, the sequence is empty.
If step is 0 a ValueError exception is raised:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: range() arg 3 must not be zero
Conclusion
The Python range type allows you to generate a sequence of integers. It is mostly used in for loops.
If you have any questions or feedback, feel free to leave a comment.


