Python:十进制数的范围函数

时间:2014-11-22 10:46:58

标签: python range decimal

python中是否有任何range()函数用于浮点数 例如

a=0.6

if a in range(0,1):
    a=3

我该如何实现?

4 个答案:

答案 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))