In Python, the range() function is used to create a sequence of numbers, commonly used in for loops.

Function Syntax

Exists in three forms:

range(stop)
range(start, stop)
range(start, stop, step)
  1. Generates integer sequence from 0 to stop - 1 with step 1.
  2. Generates integer sequence from start to stop - 1 with step 1.
  3. Generates integer sequence from start to stop - 1 with step step.

When the first parameter is greater than the second, range() still returns a sequence, but the elements go from the first parameter to the second parameter in decreasing order with a negative step.

Returns a range object.

range() Function Examples

for i in range(5):
    print(i, end=' ')
# Output: 0 1 2 3 4
print()

for i in range(2, 5):
    print(i, end=' ')
# Output: 2 3 4
print()

for i in range(1, 10, 2):
    print(i, end=' ')
# Output: 1 3 5 7 9
print()

for i in range(10, 0, -2):
    print(i, end=' ')
# Output: 10 8 6 4 2
print()

range objects are lazy, not generating all numbers immediately, only when needed:

r = range(1000000)  # Created immediately, uses little memory
print(type(r))      # <class 'range'>

# Numbers actually generated only now
lst = list(r)  
print(type(lst))    # <class 'list'>

# Memory usage comparison
import sys
print(f"range object size: {sys.getsizeof(r)} bytes")    # About 48 bytes
print(f"list object size: {sys.getsizeof(lst)} bytes")   # About 8000056 bytes

Common attributes and methods of range objects:

r = range(2, 10, 2)

# Access elements
print(r[0])      # 2
print(r[2])      # 6
print(r[-1])     # 8

# Length
print(len(r))    # 4

# Membership check
print(6 in r)    # True
print(7 in r)    # False

# Index
print(r.index(6))  # 2

# Count
print(r.count(6))  # 1