如果数字介于两个值之间则返回[Python]

时间:2014-10-29 06:37:42

标签: python python-3.x

这是一个很简单的问题,但我对如何实现这个问题一无所知。

本质:

>>> r = range(4,-1)
>>> 3 in r
False
>>> q = range(-1,4)
>>> 3 in q
True

正如你所看到的,我有相同的界限,-1和4,以及相同的测试值,所以我怎么说'3'在'-1'和'4'之间我不知道命令他们给我?

7 个答案:

答案 0 :(得分:6)

为什么不先对边界进行排序?

r = range(*sorted((4, -1)))
q = range(*sorted((-1, 4)))

答案 1 :(得分:4)

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

r = range(4,-1)
print r 

[]   ## returned an empty list so which is why 3 in r returns False.

但是当你像这样执行时

q = range(-1,4)
print q

[-1, 0, 1, 2, 3]  ## Returned a list with 3 in it so 3 in q returns True

现在你要查看范围内的跌幅然后你可以这样做

if -1<= 3 <= 4:
   print "Falls in the range"
else:
   print "not in range"

输出:

Falls in the range

答案 2 :(得分:3)

range没有按照您的想法行事。

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

想象一下,当lowerEnd为-20000而upperEnd为+20000时。在这样的range( -20000, 20000 )中使用num并比较range()会浪费内存和CPU功率。

numlowerEndupperEnd进行比较就足够了。 num = 3 print(-1 < num < 4) 限制

您想查看:

{{1}}

答案 3 :(得分:0)

使用if语句查找订单

if c > d:
    c, d = d, c 

r = range(c, d)

答案 4 :(得分:0)

也许这个?

r = list(xrange(4,-1,-1))
3 in r

True

q = list(xrange(-1,4,1))
3 in q

True

答案 5 :(得分:0)

range内置的语法需要一段时间才能掌握,但在使用交互式解释器help(range)时总是有帮助...

Python 2.x

>>> print range(4,-1)
>>> print range(-1,4)

Pyton 3.x

>>> print(list(range(4,-1)))
>>> print(list(range(-1,4)))

但是有一个问题(可能没有你的具体问题),即使你在调用范围中添加一个步骤参数(Python 2.x的例子)

>>> print range(4, -1, -1)
>>> print range(-1,4)

如您所见,两个范围不同:start参数在列表中,stop参数不在。


你可以用这些术语来考虑它:&#34;在range中,stop参数意味着之前停止&#34;。


答案 6 :(得分:0)

正如101和d-coder所回答的那样,你应该使用<<=运算符构建两个其他值之间值的问题,具体取决于你想。假设你知道r是一个简单的集合,比如列表或元组或范围,但你不知道它的排序,你可以写:

>>> r = (-1,4,2,3,0)
>>> min(r) < 3 < max(r)
True
>>> min(r) < 2.5 < max(r)
True

另一方面,in运算符将测试您的值是否是列表中的值之一

>>> 3 in r
True
>>> 2.5 in r
False

最后,您的第一个示例失败了,因为您在尝试定义&#39; r&#39;时未指定否定步骤作为递减序列。这是一个示例,我将步长指定为-2作为range()的第3个参数:

>>> a = range(4,-1)
>>> print a
[]
>>> b = range(5,-1,-2)
>>> print b
[5, 3, 1]
>>> 3 in a
False
>>> 3 in b
True