Generates a sequence of numbers within a given range

## Usage

The `range()` function generates a sequence of numbers from start up to stop, and increments by step.

When used in a for loop, `range()` provides a simple way to repeat an action a specific number of times.

``````for x in range(3):
print('Hello!')
# Prints Hello! Hello! Hello!``````

## Syntax

range(start,stop,step)

 Parameter Condition Description start Optional A number specifying start position.Default is 0. stop Required A number specifying end position. step Optional A number specifying the increment.Default is 1.

## range(stop)

When you call `range()` with just one argument, you will get a sequence of numbers starting from 0 up to the specified number.

``````# Generate a sequence of numbers from 0 to 6
for x in range(7):
print(x)
# Prints 0 1 2 3 4 5 6``````

Note that range(7) is not the values of 0 to 7, but the values 0 to 6.

## range(start, stop)

The range starts from 0 by default. However, you can start the range at another number by adding a start parameter.

``````# Generate a sequence of numbers from 2 to 6
for x in range(2, 7):
print(x)
# Prints 2 3 4 5 6``````

You can generate a range of negative numbers as well.

``````for x in range(-5,0):
print(x)
# Prints -5 -4 -3 -2 -1``````

## range(start, stop, step)

The range increments by 1 by default. However, you can specify a different increment by adding a step parameter.

``````# Increment the range() with 2
for x in range(2, 7, 2):
print(x)
# Prints 2 4 6``````

You can go through the numbers in reverse order (decrementing) by specifying a negative step.

``````# Reverse Range
for x in range(6, 1, -1):
print(x)
# Prints 6 5 4 3 2``````

## List from the Range

You can construct a list of numbers from the range using list() constructor.

``````L = list(range(7))
print(L)
# Prints [0, 1, 2, 3, 4, 5, 6]``````

## Range for Float Numbers

The `range()` function works only with integers. It doesn’t support the float type. So, you can use `arange()` function from NumPy module to generate the range for float numbers.

``````import numpy

for i in numpy.arange(0, 3, 0.5):
print(i)
# Prints 0.0 0.5 1.0 1.5 2.0 2.5``````

## Indexing & Slicing

You can access items in a `range()` by index or even slice it, just as you would with a list.

``````# indexing
print(range(7))
# Prints 3

# slicing
print(list(range(7)[2:5]))
# Prints [2, 3, 4]``````