Robert Johns | 10 Feb, 2025
Fact checked by Jim Markus

Python range() Function | Docs With Examples

The Python range() function is a versatile tool for generating sequences of integer numbers.

Whether you're iterating through loops, creating custom lists, or working with zero-based indexing, understanding how Python's range() function works can save you time and effort in your Python coding journey.

Basic Syntax

The range() function has the following syntax:

range(start, stop, step)

- start (optional): The beginning of the sequence. Defaults to 0 if not specified.
- stop (required): The endpoint of the sequence (exclusive).
- step (optional): The step size, or the difference between each integer value in the sequence. Defaults to 1.

Common Examples

Here are some common use cases for Python's range() function:

1. Generating Numbers from 0 to n-1

If only one argument is provided, range() assumes it's the stop argument and starts the sequence at 0:

for i in range(5):
    print(i)

Output:

0
1
2
3
4

2. Specifying a Start and Stop

You can specify both the start argument and the stop argument:

for i in range(2, 6):
    print(i)

Output:

2
3
4
5

3. Using a Step Value

The step size determines the increment (or decrement) between numbers:

for i in range(0, 10, 2):
    print(i)

Output:

0
2
4
6
8

For reverse order sequences, use a negative step value:

for i in range(10, 0, -2):
    print(i)

Output:

10
8
6
4
2

4. Generating Odd or Even Numbers

You can use the step argument to generate a sequence of specified numbers, such as odd or even numbers:

for i in range(1, 21, 2):
    print(i)  # Generates odd numbers between 1 and 20

Converting a Range Object to a List

While range() itself doesn't produce a list, you can easily convert it to one using the list() function:

numbers = list(range(5))
print(numbers)

Output:

[0, 1, 2, 3, 4]

Working with Negative Numbers

The range() function supports negative number values for both the start value and step size, enabling reverse sequences or descending ranges:

for i in range(-5, 1):
    print(i)

Output:

-5
-4
-3
-2
-1
0

Key Takeaways

  • The range() function is zero-based by default, meaning it starts sequences at 0 unless a start value is provided.
  • It’s memory-efficient because it generates numbers on the fly, rather than storing them in memory, making it useful for many Python projects
  • The step size allows you to control the spacing between numbers, including the use of a negative step value for reverse order sequences.
  • Range objects are not lists but can be easily converted to lists or tuples if needed.
  • While range() works with integer arguments, it does not support floating-point numbers directly.

Practice Exercise

Here's an interesting problem, why not try using range() to generate all odd numbers between 1 and 20:

for i in range(1, 21, 2):
    print(i)

Wrapping Up

The Python range() function is an essential tool for generating numeric sequences with specified parameters like the start value, stop argument, and step size. Its flexibility makes it invaluable for tasks like iteration, list creation, and working with integer arguments. By mastering the range function, you'll add a valuable skill to your Python toolkit and write more efficient, Pythonic code. Happy coding!

By Robert Johns

Technical Editor for Hackr.io | 15+ Years in Python, Java, SQL, C++, C#, JavaScript, Ruby, PHP, .NET, MATLAB, HTML & CSS, and more... 10+ Years in Networking, Cloud, APIs, Linux | 5+ Years in Data Science | 2x PhDs in Structural & Blast Engineering

View all post by the author

Subscribe to our Newsletter for Articles, News, & Jobs.

I accept the Terms and Conditions.

Disclosure: Hackr.io is supported by its audience. When you purchase through links on our site, we may earn an affiliate commission.

In this article

Learn More

Please login to leave comments