【问题标题】:Python: range function for decimal numbersPython:十进制数的范围函数
【发布时间】:2014-11-22 10:46:57
【问题描述】:

python中有没有用于浮点数的range()函数 例如

a=0.6

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

我该如何实现?

【问题讨论】:

标签: python range decimal


【解决方案1】:

如果我没看错,你想测试一个数字是否在另外两个数字之间,所以使用:

a = 0.6
if 0 <= a < 1: # change to `<= 1` to be inclusive
   a = 3

您不需要生成范围并进行成员资格测试 - 除非您有一组离散值,您的 a 应该匹配 - Python 3.x 中的内置 range 可以对 @987654324 进行有效查找@s 因为它可以优化成员资格测试。如果你在一个很大的范围内有大量的离散值,那么你最好还是用数学方法来做。

【讨论】:

    【解决方案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')]
    

    【讨论】:

    • 注意它不能处理递减的范围,比如drange(10, 0, -1)
    【解决方案3】:

    假设你已经安装了 numpy:

    &gt;&gt;&gt;import numpy

    &gt;&gt;&gt;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,一定要去买它。

    【讨论】:

      【解决方案4】:

      如果您要检查 a 是否在两个数字之间,最好使用:
      0 <=a<=1
      否则,如果您确实需要 0.1 跳跃中的 0 到 1 列表,您可以使用以下代码生成它:
      lst = map(lambda x: x/10.0, range(11))

      【讨论】:

        猜你喜欢
        • 2023-02-15
        • 2021-06-12
        • 2020-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多