在Python中计算精确数量值的范围

4 投票
5 回答
4505 浏览
提问于 2025-04-15 20:33

我正在创建两个数字(浮点数)之间的一个范围,我希望这个范围的长度是固定的(不能多也不能少)。而 rangearange 是按照步长来工作的。用伪Python代码来说,我想实现的功能是:

start_value = -7.5
end_value = 0.1
my_range = my_range_function(star_value, end_value, length=6)

print my_range
[-7.50,-5.98,-4.46,-2.94,-1.42,0.10]

这实际上和R语言中的 seq 函数是一样的,后者可以指定一个给定长度的序列。在Python中可以做到这一点吗?

谢谢。

5 个回答

2
def my_function(start, end, length):
    len = length - 1
    incr = (end-start) / len
    r = [ start ]
    for i in range(len):
        r.append ( r[i] + incr )
    return r

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得简单易懂。

4

可以查看这个链接:Recipe 66472: frange(), 一个可以用浮点数递增的范围函数(Python),里面有各种浮点数实现的优缺点。

另外,如果你对精度要求比较高,可以使用 decimal.Decimal 来代替浮点数(先转换成这个类型,然后再转换回来),具体可以参考这个链接:Python decimal range() 步长值

6

使用NumPy里的linspace()函数。

>>> from numpy import linspace
>>> linspace(-7.5, 0.1, 6)
array([-7.5 , -5.98, -4.46, -2.94, -1.42,  0.1])
>>> linspace(-7.5, 0.1, 6).tolist()
[-7.5, -5.9800000000000004, -4.46, -2.9399999999999995, -1.4199999999999999, 0.10000000000000001]

这个方法应该是最有效和最准确的。

撰写回答