获取x和y之间的n个数字的列表

时间:2019-06-19 13:22:35

标签: python algorithm math range

我正在尝试使用Python3实现一段代码,该代码生成n等间距数字(可能是合理的)的列表,该列表范围在两个指定数字之间。

例如: 如果n = 3x = -1y = 1,则结果应为[-1,0,1]

我的假设是,应该使用numpy的arange以及根据这三个值计算出的步长,但是我无法弄清楚数学。在此简单示例中,步骤将为= 1,但如果为x = 0y = 1,则步骤为.5

3 个答案:

答案 0 :(得分:4)

您可以使用简单的生成器在不使用numpy的情况下进行操作:

def numbers(x, y, n):
    assert n > 1
    step = (y - x) / (n - 1)
    for i in range(n):
        yield x + i*step

print(list(numbers(-1, 1, 3)))  # [-1, 0.0, 1.0]
print(list(numbers(0, 1, 3)))  # [0, 0.5, 1.0]

答案 1 :(得分:1)

您似乎正在寻找np.linspace(),您可以阅读有关here的信息。

例如,根据需要,呼叫np.linspace(-1, 1, 3)将产生array([-1., 0., 1.])

答案 2 :(得分:0)

如Error所指出,这是无需外部包装即可轻松解决的问题,我的解决方案如下:

def partition(min,max,n):
    list=[]
    for i in range (n):
        list.append((max-min)*i/(n-1))
    return list