首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >检查数字是否不在Python中的范围内

检查数字是否不在Python中的范围内
EN

Stack Overflow用户
提问于 2016-04-09 03:37:03
回答 5查看 71.8K关注 0票数 2

好的,我现在有Python代码,它做这样的事情:

代码语言:javascript
复制
if plug in range(1, 5):
    print "The number spider has disappeared down the plughole"

但我真正想做的是检查数字是否不在范围内。我在谷歌上搜索并查看了Python文档,但我什么也找不到。有什么想法吗?

附加数据:运行此代码时:

代码语言:javascript
复制
if not plug in range(1, 5):
    print "The number spider has disappeared down the plughole"

我得到以下错误:

代码语言:javascript
复制
Traceback (most recent call last):
    File "python", line 33, in <module>
IndexError: list assignment index out of range

我也试过了:

代码语言:javascript
复制
if plug not in range(1,5):
     print "The number spider has disappeared down the plughole"

返回相同的错误。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2016-04-09 04:13:58

如果您的范围的step为1,则使用它在性能方面要快得多:

代码语言:javascript
复制
if not 1 <= plug < 5:

而不是使用其他人建议的not方法:

代码语言:javascript
复制
if plug not in range(1, 5)

证明:

代码语言:javascript
复制
>>> 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

这甚至没有考虑到创建range所花费的时间。

票数 30
EN

Stack Overflow用户

发布于 2017-01-28 03:32:16

这似乎也行得通:

代码语言:javascript
复制
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')

我猜最初问题的确切答案应该是if not 1 <= plug < 5:

票数 4
EN

Stack Overflow用户

发布于 2016-04-09 04:08:50

使用:

代码语言:javascript
复制
if plug not in range(1,5):
     print "The number spider has disappeared down the plughole"

只要变量插头超出1到5的范围,它就会打印给定的行

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36507957

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档