Check if a given value is out of certain range
Steven D'Aprano
steve at pearwood.info
Tue Sep 29 21:55:57 EDT 2015
On Wed, 30 Sep 2015 07:07 am, Ian Kelly wrote:
> On Tue, Sep 29, 2015 at 3:04 PM, Random832 <random832 at fastmail.com> wrote:
>> How about x not in range(11)?
>
> That's fine as long as x is known to only take integral values.
It's not fine. In Python 2, it's painfully slow and inefficient, both
memory-wise and algorithmically:
-1 in range(100000000) # test 0 <= -1 <= 100000000
This first creates a list of 100000000 integers, then compares each and
every one of them against -1 before returning False.
Using xrange instead at least avoids building the list first, but it still
compares -1 against each value.
Testing a numeric value within a certain range of values should be constant
time and constant memory. It should be *fast*. Using range in Python 2 is
none of those things.
--
Steven
More information about the Python-list
mailing list