这是一个很简单的问题,但我对如何实现这个问题一无所知。
本质:
>>> r = range(4,-1)
>>> 3 in r
False
>>> q = range(-1,4)
>>> 3 in q
True
正如你所看到的,我有相同的界限,-1和4,以及相同的测试值,所以我怎么说'3'在'-1'和'4'之间我不知道命令他们给我?
答案 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功率。
将num
与lowerEnd
和upperEnd
进行比较就足够了。 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)
时总是有帮助...
>>> print range(4,-1)
>>> print range(-1,4)
>>> 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