我试图找出一个数字是否在一个范围内,并且该范围的一个或两个数字可以是浮点数。
即。
if x in range(0.5, 3.5):
pass
我理解范围只接受整数
那么,如何在python中找到一个或两个浮点数之间的范围。我四处搜索,发现了frange()和numpy.linspace()。然而前者似乎是用浮点数增加而且linspace只是在一个范围之间创建一个数字列表。所有的解决方案要么将地板除以10,要么与递增有关。
我已经看了range() for floats而不是我的问题。
感谢。
答案 0 :(得分:2)
if 0.5 <= x < 3.5:
pass
您可能希望根据您是希望结束包含还是排他性来更改不等号。
Python中的“范围”不是“这两个数字之间所有数字”的抽象数学概念,但要么是实际的数字列表(Python 2中的range()
)或生成器,它能够生成一系列数字(Python 2中为xrange()
或Python 3中为range()
)。由于两个给定数字之间存在无限多个实数,因此无法在计算机上生成这样的列表/序列。即使您将自己限制为浮点数,您的范围内也可能有数百万或数十亿的数字。
出于同样的原因,即使您的代码适用于整数(但仅限于Python 2),如果您的端点相距很远,它将会非常低效:它会首先生成该范围内所有整数的列表(消耗时间和内存),然后遍历列表以查看其中是否包含x
。
如果你曾试图用其他语言做类似的事情:大多数语言不允许像这样的双重比较,而是要求你做if 0.5 < x and x < 3.5
之类的事情。
答案 1 :(得分:2)
if 0.5 < x < 3.5:
pass
我认为你根本不需要任何功能。
答案 2 :(得分:1)
如果要保持相同的语法,可以使用math
模块执行舍入。这假设x
是一个整数。
from math import ceil, floor
if x in range(floor(0.5), ceil(3.5)):
pass
答案 3 :(得分:0)
如上所述,数学模块将是实现此目的的一种方式,但是,它不是必需的,可以在一个(或两个)线路中完成
无论是
if 0.5 < x < 3.5:
pass
或在一行中,例如
if 0.5 < x < 3.5: pass