在Python中检查数字是否不在范围内
好的,我现在有Python代码,它的功能如下:在Python中检查数字是否不在范围内,python,range,Python,Range,好的,我现在有Python代码,它的功能如下: if plug in range(1, 5): print "The number spider has disappeared down the plughole" 但我真正想做的是检查数字是否在范围内。我在谷歌上搜索了一下Python文档,但什么也找不到。有什么想法吗 其他数据:运行此代码时: if not plug in range(1, 5): print "The number spider has disappeare
if plug in range(1, 5):
print "The number spider has disappeared down the plughole"
但我真正想做的是检查数字是否在范围内。我在谷歌上搜索了一下Python文档,但什么也找不到。有什么想法吗
其他数据:运行此代码时:
if not plug in range(1, 5):
print "The number spider has disappeared down the plughole"
我得到以下错误:
Traceback (most recent call last):
File "python", line 33, in <module>
IndexError: list assignment index out of range
返回了相同的错误。使用:if not plug in range(1,5):
#bla
if plug not in range(1,5):
print "The number spider has disappeared down the plughole"
当变量插头超出1到5的范围时,它将打印给定的行
if plug not in range(1,5):
print "The number spider has disappeared down the plughole"
当变量插头超出1到5的范围时,它将打印给定的行。如果您的范围内有一个
步骤,那么使用它的性能会更快:
if not 1 <= plug < 5:
证明:
>>> 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
导入timeit
>>>timeit.timeit('1如果您的产品系列的步数为1,则从性能角度来看,使用它要快得多:
if not 1 <= plug < 5:
证明:
>>> 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
导入timeit
>>>timeit.timeit('1这似乎也有效:
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')
如果不是2<3<4:
打印('3不在2和4之间)#就是这样,您不会看到这一点
如果不是2<10<4:
打印('10不在2和4'之间)
原始问题的确切答案是如果不是1这似乎也可行:
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')
如果不是2<3<4:
打印('3不在2和4之间)#就是这样,您不会看到这一点
如果不是2<10<4:
打印('10不在2和4'之间)
如果不是1,则原始问题的确切答案将是
值应键入整数,否则不在范围内
会给出奇怪的结果
值应键入整型强制转换,否则不在范围内会产生奇怪的结果。不在范围内(1,5)
?您尝试过吗?另外,请确保plug
为整型或检查不起作用,因此plug not in range(1,5)
可以很好地解决问题。我投票结束这个问题,因为在正确的条件下,这个问题可能仍然可以重现,但它涉及技术计算错误或安全问题,因此对一般堆栈溢出用户没有用处。不在范围内(1,5)
?您试过了吗?另外,请确保plug
类型为integer,或者检查不起作用,因此plug不在范围内(1,5)
可以很好地解决问题。我投票将这个问题作为主题外的问题来结束,因为在正确的条件下,这个问题可能仍然可以重现,但它涉及技术计算错误或安全问题,因此对一般堆栈溢出用户没有用。我正在做“插件不在范围内()“。但这种方法似乎也不起作用。hhhmmm…@PeterDavidCarter正在检查身份。虽然Python的读法大部分像英语,但实际上不是英语;)为什么它不起作用?这是非常基本的,它应该起作用。你确定plug是整数吗?我不知道。我发布了它给出的错误。我否决了上面的答案,因为它只是代码,不起作用,但如果答案被编辑,我可能会收回,因为它现在看起来可能有点不公平…?我正在做“plug not in range”()“。但这种方法似乎也不起作用。hhmmmm…@PeterDavidCarter正在检查身份。虽然Python的读法大部分像英语,但实际上不是英语;)为什么它不起作用?这是非常基本的,应该有效。你确定那个插头是整数吗?我不知道。我发布了它给出的错误。我否决了上面的答案,因为它只是代码,不起作用,但如果答案被编辑,我可能会收回,因为它现在可能有点不公平…?奇怪的是,我第一次运行此代码时它不起作用。后来它确实起了作用。太奇怪了。奇怪的是,我第一次运行这个代码时,它没有工作。后来它确实起了作用。太奇怪了。是性能总是更快,还是有其他可能影响事情的因素?@PeterDavidCarter我不能保证任何事情,但就我所能想到的,这样做总是更快。也许如果你在玩多个变量,以确保它们都在范围之外。。。一般来说,range()
用于需要使用范围内所有数字的时候。在这个场景中,您只需要开始点和结束点。我有点好奇,但是否可以实际查看Javascript的编译器代码,看看为什么对我来说速度更快?我相信你是对的,我只是想了解更多。我可能会在Github上找到所有Javascript库,但JS本身。。。我想,我有兴趣从一个较低的层次来看待问题……@PeterDavidCarter?你是说蟒蛇?你可以用它来查看函数的反汇编。哦,是的,就是那个。听起来很有用……:)是性能总是更快,还是有其他可能影响事情的因素?@PeterDavidCarter我不能保证任何事情,但就我所能想到的,这样做总是更快。也许如果你在玩多个变量,以确保它们都在范围之外。。。一般来说,range()
用于需要使用范围内所有数字的时候。在这个场景中,您只需要开始点和结束点。我有点好奇,但是否可以实际查看Javascript的编译器代码,看看为什么对我来说速度更快?我相信你是对的,我只是想了解更多。我可能会在Github上找到所有Javascript库,但JS本身。。。我想,我有兴趣从一个较低的层次来看待问题……@PeterDavidCarter?你是说蟒蛇?你可以用它来查看函数的反汇编。哦,是的,就是那个。听起来很有用……:)