# Python range()

The range() type returns an immutable sequence of numbers between the given start integer to the stop integer.

## Video: Python range() Function

`range()` constructor has two forms of definition:

```range(stop)
range(start, stop[, step])```

## range() Parameters

`range()` takes mainly three arguments having the same use in both definitions:

• start - integer starting from which the sequence of integers is to be returned
• stop - integer before which the sequence of integers is to be returned.
The range of integers ends at `stop - 1`.
• step (Optional) - integer value which determines the increment between each integer in the sequence

## Return value from range()

`range()` returns an immutable sequence object of numbers depending upon the definitions used:

### range(stop)

• Returns a sequence of numbers starting from `0` to `stop - 1`
• Returns an empty sequence if `stop` is `negative` or `0`.

### range(start, stop[, step])

The return value is calculated by the following formula with the given constraints:

```r[n] = start + step*n (for both positive and negative step)
where, n >=0 and r[n] < stop (for positive step)
where, n >= 0 and r[n] > stop (for negative step)```
• (If no `step`) Step defaults to 1. Returns a sequence of numbers starting from `start` and ending at `stop - 1`.
• (if `step` is zero) Raises a `ValueError` exception
• (if `step` is non-zero) Checks if the value constraint is met and returns a sequence according to the formula
If it doesn't meet the value constraint, Empty sequence is returned.

## Example 1: How range works in Python?

``````# empty range
print(list(range(0)))

# using range(stop)
print(list(range(10)))

# using range(start, stop)
print(list(range(1, 10)))``````

Output

```[]
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
```

Note: We've converted the range to a Python list, as `range()` returns a generator-like object that only prints the output on demand.

However, the range object returned by the range constructor can also be accessed by its index. It supports both positive and negative indices.

You can access the range object by index as:

`rangeObject[index]`

## Example 2: Create a list of even number between the given numbers using range()

``````start = 2
stop = 14
step = 2

print(list(range(start, stop, step)))``````

Output

```[2, 4, 6, 8, 10, 12]
```

## Example 3: How range() works with negative step?

``````start = 2
stop = -14
step = -2

print(list(range(start, stop, step)))

# value constraint not met
print(list(range(start, 14, step)))``````

Output

```[2, 0, -2, -4, -6, -8, -10, -12]
[]
```