I have Python code at the moment which does something like this:
if plug in range(1, 5):
print "The number spider has disappeared down the plughole"
But I actually want to check if the number is not in range. I've googled and had a look at the Python documentation, but I can't find anything. How can I do it?
Additional data: When running this code:
if not plug in range(1, 5):
print "The number spider has disappeared down the plughole"
I get the following error:
Traceback (most recent call last):
File "python", line 33, in <module>
IndexError: list assignment index out of range
I also tried:
if plug not in range(1,5):
print "The number spider has disappeared down the plughole"
Which returned the same error.
If your range has a step
of one, it's performance-wise much faster to use:
if not 1 <= plug < 5:
Than it would be to use the not
method suggested by others:
if plug not in range(1, 5)
Proof:
>>> import timeit
>>> timeit.timeit('1 <= plug < 5', setup='plug=3') # plug in range
0.053391717400628654
>>> timeit.timeit('1 <= plug < 5', setup='plug=12') # plug not in range
0.05137874743129345
>>> timeit.timeit('plug not in r', setup='plug=3; r=range(1, 5)') # plug in range
0.11037584743321105
>>> timeit.timeit('plug not in r', setup='plug=12; r=range(1, 5)') # plug not in range
0.05579263413291358
And this is not even taking into account the time spent on creating the range
.
This seems work as well:
if not 2 < 3 < 4:
print('3 is not between 2 and 4') # which it is, and you will not see this
if not 2 < 10 < 4:
print('10 is not between 2 and 4')
An exact answer to the original question would be if not 1 <= plug < 5:
, I guess.
Use:
if plug not in range(1,5):
print "The number spider has disappeared down the plughole"
It will print the given line whenever variable plug is out of the range 1 to 5.
if (int(5.5) not in range(int(3.0), int(6.9))):
print('False')
else:
print('True')
The value should be typecast to integer, otherwise not in range
gives a strange result.
if not plug in range(1,5):
#bla
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.