Поскольку этот популярный вопрос объясняет, range
объекты в Python 3 достаточно умны, чтобы иметь возможность эффективно проверять членство:
In [1]: 1000000000000000 in range(1000000000000001)
Out[1]: True # answer returned very quickly
Однако это не относится к оценке максимальных и минимальных значений range
с max
и min
, которая, кажется, выполняет итерацию по всей последовательности, чтобы найти эти значения:
In [2]: max(range(1000000000000001)) # don't do this
...
Было бы тривиально эффективно реализовать эти функции для range
объектов, так почему же это не было сделано? Есть ли какие-то детали реализации или крайний случай, которого мне не хватает?