如果数字在两个值之间,则返回[Python]

Tan*_*bey 1 python python-3.x

很简单的问题,但是我不知道如何实现。

实质上:

>>> r = range(4,-1)
>>> 3 in r
False
>>> q = range(-1,4)
>>> 3 in q
True
Run Code Online (Sandbox Code Playgroud)

如您所见,我具有相同的边界-1和4,以及相同的测试值,所以当我不知道它们的顺序时,如何说'3'在'-1'和'4'之间送给我吗?

Joh*_*ooy 6

为什么不先对边界排序?

r = range(*sorted((4, -1)))
q = range(*sorted((-1, 4)))
Run Code Online (Sandbox Code Playgroud)


101*_*101 5

range 不会做你认为它会做的事情。

它创建一个列表;它不是一个数字范围。实际上它在 Python 3 中确实如此。

想象一个情况,当lowerEnd是 -20000 和upperEnd是 +20000 时。在这种情况下使用range( -20000, 20000 )和 比较会浪费内存和 CPU 能力。numrange()

比较一个numlowerEndupperEnd限制就足够了

您要检查:

num = 3
print(-1 < num < 4)
Run Code Online (Sandbox Code Playgroud)


d-c*_*der 5

为什么不尝试打印代码片段的每个步骤?该代码在某种程度上变得不言自明。range()实际上返回一个列表。所以当执行这一行时

r = range(4,-1)
print r 

[]   ## returned an empty list so which is why 3 in r returns False.
Run Code Online (Sandbox Code Playgroud)

但是当你像这样执行时

q = range(-1,4)
print q

[-1, 0, 1, 2, 3]  ## Returned a list with 3 in it so 3 in q returns True
Run Code Online (Sandbox Code Playgroud)

现在你想检查范围内的情况,那么你可以这样做

if -1<= 3 <= 4:
   print "Falls in the range"
else:
   print "not in range"
Run Code Online (Sandbox Code Playgroud)

输出:

Falls in the range
Run Code Online (Sandbox Code Playgroud)