# Why is "1000000000000000 in range(1000000000000001)" so fast in Python 3?

The `range()`

function generates a sequence of numbers, starting from the first argument, and ending before the second argument. The sequence is generated on-the-fly, which means that the numbers are not actually stored in memory. Instead, the `range()`

function generates the next number in the sequence only when it is needed, using an algorithm that is designed to be very fast.

In the case of `range(1000000000000001)`

, the `range()`

function will generate numbers starting from `0`

, and ending before `1000000000000001`

. The number `1000000000000000`

is not included in this range, so the `in`

operator will return `False`

immediately, without generating any of the other numbers in the range. This is why the expression is fast.

By contrast, if you wrote `1000000000000000 in range(1000000000000001, 10000000000000000)`

, then the `range()`

function would have to generate all 100 trillion numbers in the range before it could determine that `1000000000000000`

is not in the range, which would be much slower.