python中是否有任何range()函数用于浮点数 例如
a=0.6
if a in range(0,1):
a=3
我该如何实现?
答案 0 :(得分:4)
如果我正确阅读,您想测试一个数字是否介于两个其他数字之间,请使用:
a = 0.6
if 0 <= a < 1: # change to `<= 1` to be inclusive
a = 3
您不需要生成范围并进行成员资格测试 - 除非您有一组a
应该匹配的离散值 - Python 3.x中的内置range
可以有效查找int
,因为它可以优化成员资格测试。如果你在很大的范围内有大量的离散值,那么无论如何你最好还是以数学方式进行。
答案 1 :(得分:2)
与Begueradj关联的问题类似,但略有不同(注意,浮动与小数不同):
import decimal
def drange(start, stop, step=decimal.Decimal('1')):
while start < stop:
yield start
start += step
print(list(drange(
decimal.Decimal('1.25'),
decimal.Decimal('2.34'),
decimal.Decimal('0.1'),
)))
输出:
[Decimal('1.25'), Decimal('1.35'), Decimal('1.45'), Decimal('1.55'),
Decimal('1.65'), Decimal('1.75'), Decimal('1.85'), Decimal('1.95'),
Decimal('2.05'), Decimal('2.15'), Decimal('2.25')]
答案 2 :(得分:1)
假设你已经安装了numpy:
>>>
import numpy
>>>
print np.arange(0,1,0.1)数组([0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,0.8,0.9])
如果你没有安装Numpy,一定要去拿它。
答案 3 :(得分:-1)
如果你想检查a是否介于两个数字之间,最好使用:
0 <=a<=1
否则,如果你确实需要0.1跳跃中的0到1的列表,你可以使用这段代码来生成它:
lst = map(lambda x: x/10.0, range(11))